From 35d038e8260792435fa55a738255bbea5d418dc1 Mon Sep 17 00:00:00 2001
From: shale <sarah.hale@nasa.gov>
Date: Tue, 14 Jul 2015 12:55:00 -0700
Subject: [PATCH] [Search] Processing as separate function

Moved the search term processing to be its
own separate function.
---
 platform/features/search/src/QueryService.js | 57 +++++++++++++-------
 1 file changed, 37 insertions(+), 20 deletions(-)

diff --git a/platform/features/search/src/QueryService.js b/platform/features/search/src/QueryService.js
index a24c5f5292..655ff6cf95 100644
--- a/platform/features/search/src/QueryService.js
+++ b/platform/features/search/src/QueryService.js
@@ -120,6 +120,39 @@ define(
                 });
             }
             
+            // Currently specific to elasticsearch
+            function processSearchTerm(searchTerm) {
+                // Allow exact searches by checking to see if the first and last 
+                // chars are quotes. 
+                if ((searchTerm.substr(0, 1) === '"' && searchTerm.substr(searchTerm.length - 1, 1) === '"') ||
+                        (searchTerm.substr(0, 1) === "'" && searchTerm.substr(searchTerm.length - 1, 1) === "'")) {
+                    // Remove the quotes, because of how elasticsearch processses.
+                    // This will mean that elasticsearch will return any object that has
+                    // that searchTerm as a part of the name _separated by spaces_.
+                    searchTerm = searchTerm.substring(1, searchTerm.length - 1);
+                }
+                // If the search starts with 'type:', then search for domain object type, rather 
+                // than the domain object name.
+                else if (searchTerm.includes('type:')) {
+                    // Do nothing for now 
+                } else if (searchTerm.includes('name:')) {
+                    // Do nothing for now 
+                } else {
+                    // Put wildcards on front and end to allow substring behavior.
+                    // This works when options like AND and OR are not used, which is 
+                    // the case most of the time. 
+                    // e.g. The input 'sine' become '*sine*', but the input 
+                    //      'sine OR telemetry' becomes '*sine OR telemetry*' instead of 
+                    //      '*sine* OR *telemetry*'
+                    searchTerm = '*' + searchTerm + '*';
+                    
+                    // Assume that the search term is for the name by default
+                    searchTerm = "name:" + searchTerm;
+                }
+                
+                return searchTerm;
+            }
+            
             // Use elasticsearch's search to search through all the objects
             function queryElasticsearch(inputID, maxResults) {
                 var searchTerm;
@@ -140,26 +173,10 @@ define(
                     searchTerm = document.getElementById("searchinput").value;
                 }
                 
-                // Process search term.
-                // Allow exact searches by checking to see if the first and last 
-                // chars are quotes. 
-                if ((searchTerm.substr(0, 1) === '"' && searchTerm.substr(searchTerm.length - 1, 1) === '"') ||
-                        (searchTerm.substr(0, 1) === "'" && searchTerm.substr(searchTerm.length - 1, 1) === "'")) {
-                    // Remove the quotes, because of how elasticsearch processses.
-                    // This will mean that elasticsearch will return any object that has
-                    // that searchTerm as a part of the name _separated by spaces_.
-                    searchTerm = searchTerm.substring(1, searchTerm.length - 1);
-                } else {
-                    // Put wildcards on front and end to allow substring behavior.
-                    // This works when options like AND and OR are not used, which is 
-                    // the case most of the time. 
-                    // e.g. The input 'sine' become '*sine*', but the input 
-                    //      'sine OR telemetry' becomes '*sine OR telemetry*' instead of 
-                    //      '*sine* OR *telemetry*'
-                    searchTerm = '*' + searchTerm + '*';
-                }
-                // Assume that the search term is for the name by default
-                searchTerm = "name:" + searchTerm;
+                // Process search term
+                searchTerm = processSearchTerm(searchTerm);
+                
+                console.log(searchTerm);
                 
                 // Get the data...
                 return $http({