ATLAS-1755: added checkbox to exclude deleted entities in basic and fulltext search

Signed-off-by: Madhan Neethiraj <madhan@apache.org>
diff --git a/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html b/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
index af984f5..4361ca1 100644
--- a/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
@@ -25,6 +25,10 @@
         <a href="javascript:void(0)" class="inputAssignTag multiSelectTag assignTag btnAssign" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i> Assign Tag</a>
     </div>
     <div class="searchTable">
+        <div style="display: none;margin-left: 20px" data-id="checkDeletedEntity">
+            <label class="checkbox">
+                <input type="checkbox" class="input" name="queryType" value="text" name="check" value="1" />Include historical entities</label>
+        </div>
         <span style="display: none;" class="labelShowRecord pull-left" data-id="pageRecordText"></span>
         <div data-id="paginationDiv" style="display:none">
             <ul class="pager pull-right">
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index cad4bec..b2f24d4 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -60,6 +60,7 @@
                 addAssignTag: "[data-id='addAssignTag']",
                 editEntityButton: "[data-id='editEntityButton']",
                 createEntity: "[data-id='createEntity']",
+                checkDeletedEntity: "[data-id='checkDeletedEntity']"
             },
             templateHelpers: function() {
                 return {
@@ -116,6 +117,7 @@
                 events["click " + this.ui.previousData] = "onClickpreviousData";
                 events["click " + this.ui.editEntityButton] = "onClickEditEntity";
                 events["click " + this.ui.createEntity] = 'onClickCreateEntity';
+                events["click " + this.ui.checkDeletedEntity] = 'onCheckDeletedEntity';
                 return events;
             },
             /**
@@ -128,7 +130,6 @@
                 this.entityModel = new VEntity();
                 this.searchCollection = new VSearchList();
                 this.limit = 25;
-                this.firstFetch = true;
                 this.asyncFetchCounter = 0;
                 this.offset = 0;
                 this.commonTableOptions = {
@@ -231,18 +232,19 @@
                     }
                 }
             },
-            fetchCollection: function(value) {
+            fetchCollection: function(value, deleteChecked) {
                 var that = this;
                 this.showLoader();
                 if (Globals.searchApiCallRef && Globals.searchApiCallRef.readyState === 1) {
                     Globals.searchApiCallRef.abort();
                 }
-
                 if (value && !value.paginationChange) {
                     $.extend(this.searchCollection.queryParams, { limit: this.limit });
                     if (value.searchType) {
                         this.searchCollection.url = UrlLinks.searchApiUrl(value.searchType);
-                        $.extend(this.searchCollection.queryParams, { limit: this.limit });
+                        if (deleteChecked === undefined) {
+                            $.extend(this.searchCollection.queryParams, { limit: this.limit, excludeDeletedEntities: true });
+                        }
                         this.offset = 0;
                     }
                     _.extend(this.searchCollection.queryParams, { 'query': (value.query ? value.query.trim() : null), 'typeName': value.type || null, 'classification': value.tag || null });
@@ -281,21 +283,10 @@
                                 that.ui.previousData.attr('disabled', true);
                             }
                             if (that.searchCollection.models.length === 0) {
-                                that.checkTableFetch();
                                 that.offset = that.offset - that.limit;
-                                if (that.firstFetch) {
-                                    that.renderTableLayoutView();
-                                }
                             }
                         }
-                        if (that.firstFetch) {
-                            that.firstFetch = false;
-                        }
-
-                        // checking length for not rendering the table
-                        if (that.searchCollection.models.length) {
-                            that.renderTableLayoutView();
-                        }
+                        that.renderTableLayoutView();
                         if (value) {
                             var resultArr = [];
                             if (that.searchCollection.queryParams.typeName) {
@@ -326,6 +317,11 @@
                     that.REntityTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
                         columns: columns
                     })));
+                    if (that.searchCollection.models.length && that.value.searchType !== "dsl") {
+                        that.ui.checkDeletedEntity.show();
+                    } else {
+                        that.ui.checkDeletedEntity.hide();
+                    }
                     that.ui.paginationDiv.show();
                     that.$(".ellipsis .inputAssignTag").hide();
                     that.renderBreadcrumb();
@@ -656,6 +652,14 @@
                         }
                     });
                 });
+            },
+            onCheckDeletedEntity: function(e) {
+                if (e.target.checked) {
+                    $.extend(this.searchCollection.queryParams, { limit: this.limit, excludeDeletedEntities: false });
+                } else {
+                    $.extend(this.searchCollection.queryParams, { limit: this.limit, excludeDeletedEntities: true });
+                }
+                this.fetchCollection(this.value, e.target.checked);
             }
         });
     return SearchResultLayoutView;