Atlas-4166: UI should not allow the user to create a glossary with blank(" ") name

Signed-off-by: kevalbhatt <kbhatt@apache.org>
diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index f766204..80db527 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -711,20 +711,6 @@
                 "allowCancel": true
             }).open();
             modal.$el.find('button.ok').attr("disabled", "true");
-            if (model) {
-                view.$('input,textarea').on('keyup', function(e) {
-                    modal.$el.find('button.ok').attr("disabled", false);
-                });
-            } else {
-                view.ui.name.on('keyup', function(e) {
-                    modal.$el.find('button.ok').attr("disabled", false);
-                });
-            }
-            view.ui.name.on('keyup', function(e) {
-                if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value.trim() == "") {
-                    modal.$el.find('button.ok').attr("disabled", true);
-                }
-            });
             modal.on('ok', function() {
                 modal.$el.find('button.ok').showButtonLoader();
                 CommonViewFunction.createEditGlossaryCategoryTermSubmit(_.extend({ "ref": view, "modal": modal }, options));
diff --git a/dashboardv2/public/js/utils/Helper.js b/dashboardv2/public/js/utils/Helper.js
index 8b9f4c5..050dfd5 100644
--- a/dashboardv2/public/js/utils/Helper.js
+++ b/dashboardv2/public/js/utils/Helper.js
@@ -127,6 +127,20 @@
     $("body").on('click', '.btn', function() {
         $(this).blur();
     });
+    $('body').on('keyup input', '.modal-body', function(e) {
+        var $this = $(this),
+            $footerButton = $this.parents(".modal").find('.modal-footer button.ok'),
+            requiredInputField = _.filter($this.find('input'), function($e) {
+                if ($e.getAttribute('placeholder') && $e.getAttribute('placeholder').indexOf('require') >= 0) {
+                    return ($e.value.trim() == "");
+                }
+            });
+        if (requiredInputField.length > 0) {
+            $footerButton.attr("disabled", "true");
+        } else {
+            $footerButton.removeAttr("disabled");
+        }
+    });
     if ($.fn.select2) {
         $.fn.select2.amd.define("TagHideDeleteButtonAdapter", [
                 "select2/utils",
diff --git a/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js b/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
index 6261585..4957002 100644
--- a/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
+++ b/dashboardv2/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
@@ -180,7 +180,7 @@
                 }
                 validationFileds.each(function(elements) {
                     $(this).removeClass('errorValidate');
-                    if (validationFileds[elements].value == '' || validationFileds[elements].value == null) {
+                    if (validationFileds[elements].value.trim() == '' || validationFileds[elements].value == null) {
                         if (validationFileds[elements].style.display != 'none') {
                             $(validationFileds[elements]).addClass('errorValidate');
                             $(this).addClass('errorValidate');
diff --git a/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js b/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
index 1710fb0..ec06a75 100644
--- a/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
+++ b/dashboardv2/public/js/views/entity/CreateEntityLayoutView.js
@@ -150,7 +150,7 @@
                 });
 
                 this.ui.entityInputData.on('keyup change', 'input.true,select.true', function(e) {
-                    if (this.value !== "") {
+                    if (this.value.trim() !== "") {
                         if ($(this).data('select2')) {
                             $(this).data('select2').$container.find('.select2-selection').removeClass("errorClass");
                         } else {
@@ -293,6 +293,7 @@
                         that.subAttributeData(data)
                     },
                     complete: function() {
+                        that.modal.$el.find('button.ok').prop("disabled", true);
                         //that.initilizeElements();
                     },
                     silent: true
diff --git a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
index 69c83df..39b5775 100644
--- a/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv2/public/js/views/entity/EntityLabelDefineView.js
@@ -126,7 +126,7 @@
             if (!state.id) {
                 return state.text;
             }
-            if (!state.element) {
+            if (!state.element && state.text.trim() !== "") {
                 return $("<span>Add<strong> '" + _.escape(state.text) + "'</strong></span>");
             }
         },
@@ -151,7 +151,7 @@
         saveUserDefinedLabels: function() {
             var that = this;
             var entityJson = that.entityModel.toJSON();
-            if (entityJson.labels !== undefined || this.labels.length !== 0) {
+            if ((entityJson.labels && entityJson.labels.length !== 0) || this.labels.length !== 0) {
                 var payload = this.labels;
                 that.entityModel.saveEntityLabels(entityJson.guid, {
                     data: JSON.stringify(payload),
diff --git a/dashboardv2/public/js/views/search/save/SaveModalLayoutView.js b/dashboardv2/public/js/views/search/save/SaveModalLayoutView.js
index 9b4ba18..3507588 100644
--- a/dashboardv2/public/js/views/search/save/SaveModalLayoutView.js
+++ b/dashboardv2/public/js/views/search/save/SaveModalLayoutView.js
@@ -62,14 +62,6 @@
                     allowCancel: true
                 }).open();
                 modal.$el.find('button.ok').attr("disabled", "true");
-                this.ui.saveAsName.on('keyup', function(e) {
-                    modal.$el.find('button.ok').removeAttr("disabled");
-                });
-                this.ui.saveAsName.on('keyup', function(e) {
-                    if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value.trim() == "") {
-                        modal.$el.find('button.ok').attr("disabled", "true");
-                    }
-                });
                 modal.on('ok', function() {
                     modal.$el.find('button.ok').attr("disabled", "true");
                     that.onCreateButton(modal);
diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
index c358e05..61f694c 100644
--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
+++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
@@ -367,14 +367,6 @@
                             allowCancel: true,
                         }).open();
                     modal.$el.find('button.ok').attr("disabled", "true");
-                    view.ui.tagName.on('keyup', function(e) {
-                        modal.$el.find('button.ok').removeAttr("disabled");
-                    });
-                    view.ui.tagName.on('keyup', function(e) {
-                        if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value.trim() == "") {
-                            modal.$el.find('button.ok').attr("disabled", "true");
-                        }
-                    });
                     modal.on('shownModal', function() {
                         view.ui.parentTag.select2({
                             multiple: true,
diff --git a/dashboardv3/public/js/utils/CommonViewFunction.js b/dashboardv3/public/js/utils/CommonViewFunction.js
index 394d62f..14a8b74 100644
--- a/dashboardv3/public/js/utils/CommonViewFunction.js
+++ b/dashboardv3/public/js/utils/CommonViewFunction.js
@@ -731,20 +731,6 @@
                 "allowCancel": true
             }).open();
             modal.$el.find('button.ok').attr("disabled", "true");
-            if (model) {
-                view.$('input,textarea').on('keyup', function(e) {
-                    modal.$el.find('button.ok').attr("disabled", false);
-                });
-            } else {
-                view.ui.name.on('keyup', function(e) {
-                    modal.$el.find('button.ok').attr("disabled", false);
-                });
-            }
-            view.ui.name.on('keyup', function(e) {
-                if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value.trim() == "") {
-                    modal.$el.find('button.ok').attr("disabled", true);
-                }
-            });
             modal.on('ok', function() {
                 modal.$el.find('button.ok').showButtonLoader();
                 CommonViewFunction.createEditGlossaryCategoryTermSubmit(_.extend({ "ref": view, "modal": modal }, options));
diff --git a/dashboardv3/public/js/utils/Helper.js b/dashboardv3/public/js/utils/Helper.js
index b3af004..acb549c 100644
--- a/dashboardv3/public/js/utils/Helper.js
+++ b/dashboardv3/public/js/utils/Helper.js
@@ -133,7 +133,20 @@
     $("body").on('click', '.btn', function() {
         $(this).blur();
     });
-
+    $('body').on('keyup input', '.modal-body', function(e) {
+        var $this = $(this),
+            $footerButton = $this.parents(".modal").find('.modal-footer button.ok'),
+            requiredInputField = _.filter($this.find('input'), function($e) {
+                if ($e.getAttribute('placeholder') && $e.getAttribute('placeholder').indexOf('require') >= 0) {
+                    return ($e.value.trim() == "");
+                }
+            });
+        if (requiredInputField.length > 0) {
+            $footerButton.attr("disabled", "true");
+        } else {
+            $footerButton.removeAttr("disabled");
+        }
+    });
     $.fn.select2.amd.define("TagHideDeleteButtonAdapter", [
             "select2/utils",
             "select2/selection/multiple",
diff --git a/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js b/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
index 6261585..4957002 100644
--- a/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
+++ b/dashboardv3/public/js/views/business_metadata/CreateBusinessMetadataLayoutView.js
@@ -180,7 +180,7 @@
                 }
                 validationFileds.each(function(elements) {
                     $(this).removeClass('errorValidate');
-                    if (validationFileds[elements].value == '' || validationFileds[elements].value == null) {
+                    if (validationFileds[elements].value.trim() == '' || validationFileds[elements].value == null) {
                         if (validationFileds[elements].style.display != 'none') {
                             $(validationFileds[elements]).addClass('errorValidate');
                             $(this).addClass('errorValidate');
diff --git a/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js b/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
index 16d68a1..d05fe69 100644
--- a/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
+++ b/dashboardv3/public/js/views/entity/CreateEntityLayoutView.js
@@ -151,7 +151,7 @@
                 });
 
                 this.ui.entityInputData.on('keyup change', 'input.true,select.true', function(e) {
-                    if (this.value !== "") {
+                    if (this.value.trim() !== "") {
                         if ($(this).data('select2')) {
                             $(this).data('select2').$container.find('.select2-selection').removeClass("errorClass");
                         } else {
@@ -294,6 +294,7 @@
                         that.subAttributeData(data)
                     },
                     complete: function() {
+                        that.modal.$el.find('button.ok').prop("disabled", true);
                         //that.initilizeElements();
                     },
                     silent: true
diff --git a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
index d3ddf55..9dee7d7 100644
--- a/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
+++ b/dashboardv3/public/js/views/entity/EntityLabelDefineView.js
@@ -126,7 +126,7 @@
             if (!state.id) {
                 return state.text;
             }
-            if (!state.element) {
+            if (!state.element && state.text.trim() !== "") {
                 return $("<span>Add<strong> '" + _.escape(state.text) + "'</strong></span>");
             }
         },
@@ -151,7 +151,7 @@
         saveUserDefinedLabels: function() {
             var that = this;
             var entityJson = that.entityModel.toJSON();
-            if (entityJson.labels !== undefined || this.labels.length !== 0) {
+            if ((entityJson.labels && entityJson.labels.length !== 0) || this.labels.length !== 0) {
                 var payload = this.labels;
                 that.entityModel.saveEntityLabels(entityJson.guid, {
                     data: JSON.stringify(payload),
diff --git a/dashboardv3/public/js/views/search/save/SaveModalLayoutView.js b/dashboardv3/public/js/views/search/save/SaveModalLayoutView.js
index dde233a..6e6e649 100644
--- a/dashboardv3/public/js/views/search/save/SaveModalLayoutView.js
+++ b/dashboardv3/public/js/views/search/save/SaveModalLayoutView.js
@@ -76,14 +76,6 @@
                 });
                 this.modal.open();
                 modal.$el.find('button.ok').attr("disabled", "true");
-                this.ui.saveAsName.on('keyup', function(e) {
-                    modal.$el.find('button.ok').removeAttr("disabled");
-                });
-                this.ui.saveAsName.on('keyup', function(e) {
-                    if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value.trim() == "") {
-                        modal.$el.find('button.ok').attr("disabled", "true");
-                    }
-                });
                 modal.on('ok', function() {
                     modal.$el.find('button.ok').attr("disabled", "true");
                     that.onCreateButton();
diff --git a/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
index 43ca358..a1f3f3f 100644
--- a/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/ClassificationTreeLayoutView.js
@@ -652,14 +652,6 @@
                         allowCancel: true
                     }).open();
                 modal.$el.find("button.ok").attr("disabled", "true");
-                view.ui.tagName.on("keyup", function(e) {
-                    modal.$el.find("button.ok").removeAttr("disabled");
-                });
-                view.ui.tagName.on("keyup", function(e) {
-                    if ((e.keyCode == 8 || e.keyCode == 32 || e.keyCode == 46) && e.currentTarget.value.trim() == "") {
-                        modal.$el.find("button.ok").attr("disabled", "true");
-                    }
-                });
                 modal.on("shownModal", function() {
                     view.ui.parentTag.select2({
                         multiple: true,