diff --git a/src/definitions/modules/search.js b/src/definitions/modules/search.js index 2291fd1df..c46693681 100644 --- a/src/definitions/modules/search.js +++ b/src/definitions/modules/search.js @@ -256,6 +256,21 @@ $.fn.search = function(parameters) { } }, + setup: { + api: function() { + var + apiSettings = { + on : false, + action : 'search', + debug : settings.debug, + onFailure : module.error + }, + searchHTML + ; + $module.api(apiSettings); + } + }, + query: function() { var searchTerm = $prompt.val(), @@ -270,15 +285,15 @@ $.fn.search = function(parameters) { if($.isPlainObject(settings.source) || $.isArray(settings.source)) { module.search.local(searchTerm); } - else if(settings.apiSettings) { - module.search.remote(searchTerm); - } - else if($.fn.api !== undefined && $.api.settings.api.search !== undefined) { - module.debug('Searching with default search API endpoint'); - settings.apiSettings = { - action: 'search' - }; - module.search.remote(searchTerm); + else if($.fn.api !== undefined ) { + if(settings.apiSettings) { + module.debug('Searching with specified API settings', settings.apiSettings); + module.search.remote(searchTerm); + } + else if($.api.settings.api.search !== undefined) { + module.debug('Searching with default search API endpoint'); + module.search.remote(searchTerm); + } } else { module.error(error.source); @@ -295,8 +310,8 @@ $.fn.search = function(parameters) { searchFields = $.isArray(settings.searchFields) ? settings.searchFields : [settings.searchFields], - searchRegExp = new RegExp('(?:\s|^)' + searchTerm, 'i'), - fullTextRegExp = new RegExp(searchTerm, 'i'), + searchRegExp = new RegExp('(?:\s|^)' + searchTerm, 'i'), + fullTextRegExp = new RegExp(searchTerm, 'i'), searchHTML ; $module @@ -331,25 +346,38 @@ $.fn.search = function(parameters) { remote: function(searchTerm) { var apiSettings = { - stateContext : $module, - urlData : { - query: searchTerm - }, onSuccess : function(response) { - searchHTML = module.generateResults(response); - module.write.cache(searchTerm, searchHTML); - module.addResults(searchHTML); + module.parse.response.call(element, response, searchTerm); }, - onFailure : module.error - }, - searchHTML + urlData: { + query: searchTerm + } + } ; - module.cancel(); - module.debug('Executing search'); + if( !$module.api('get request') ) { + module.setup.api(); + } $.extend(true, apiSettings, settings.apiSettings); - $.api(apiSettings); + module.debug('Executing search', apiSettings); + module.cancel(); + $module + .api('setting', apiSettings) + .api('query') + ; } + }, + parse: { + response: function(response, searchTerm) { + var + searchHTML = module.generateResults(response) + ; + module.verbose('Parsing server response', response); + if(searchTerm) { + module.write.cache(searchTerm, searchHTML); + } + module.addResults(searchHTML); + } }, throttle: function() { @@ -387,10 +415,14 @@ $.fn.search = function(parameters) { var cache = $module.data('cache') ; - return (settings.cache && (typeof cache == 'object') && (cache[name] !== undefined) ) - ? cache[name] - : false - ; + if(settings.cache) { + module.verbose('Checking for server response in cache', name); + return (typeof cache == 'object') && (cache[name] !== undefined) + ? cache[name] + : false + ; + } + return false; } }, @@ -401,10 +433,13 @@ $.fn.search = function(parameters) { ? $module.data('cache') : {} ; - cache[name] = value; - $module - .data('cache', cache) - ; + if(settings.cache) { + module.verbose('Writing server response to cache', name, value); + cache[name] = value; + $module + .data('cache', cache) + ; + } } }, @@ -679,7 +714,7 @@ $.fn.search.settings = { name : 'Search Module', namespace : 'search', - debug : false, + debug : true, verbose : true, performance : true,