Move invocation of run_auto_searches() from when DOM is ready to when
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index b6f059e..ff67799 100644 (file)
@@ -5,6 +5,7 @@
 
 // Set up namespace and some state.
 var mkws = {
+    authenticated: false,
     filters: [],
 };
 
@@ -326,7 +327,8 @@ function my_onterm(data) {
     }
 
     var termlist = document.getElementById("mkwsTermlists");
-    replaceHtml(termlist, acc.join(''));
+    if (termlist)
+       replaceHtml(termlist, acc.join(''));
 }
 
 function add_single_facet(acc, caption, data, max, pzIndex) {
@@ -408,12 +410,24 @@ function domReady ()
 // when search button pressed
 function onFormSubmitEventHandler()
 {
+    newSearch(document.mkwsSearchForm.mkwsQuery.value);
+    return false;
+}
+
+function newSearch(query)
+{
+    if (!mkws.authenticated) {
+       alert("searching before authentication");
+       return;
+    }
+
+    mkws.filters = []
+    redraw_navi();
     resetPage();
     loadSelect();
-    triggerSearch();
+    triggerSearch(query);
     mkws.switchView('records'); // In case it's configured to start off as hidden
     submitted = true;
-    return false;
 }
 
 function onSelectDdChange()
@@ -431,11 +445,16 @@ function resetPage()
     totalRec = 0;
 }
 
-function triggerSearch ()
+function triggerSearch (query)
 {
     var pp2filter = "";
     var pp2limit = "";
 
+    // Re-use previous query if a new one is not specified
+    if (query) {
+       mkws.query = query;
+    }
+
     for (var i in mkws.filters) {
        var filter = mkws.filters[i];
        if (filter.id) {
@@ -449,8 +468,8 @@ function triggerSearch ()
        }
     }
 
-    debug("triggerSearch(" + document.mkwsSearchForm.mkwsQuery.value + "): filters = " + JSON.stringify(mkws.filters) + ", pp2filter = " + pp2filter + ", pp2limit = " + pp2limit);
-    my_paz.search(document.mkwsSearchForm.mkwsQuery.value, recPerPage, curSort, pp2filter, undefined, { limit: pp2limit });
+    debug("triggerSearch(" + mkws.query + "): filters = " + JSON.stringify(mkws.filters) + ", pp2filter = " + pp2filter + ", pp2limit = " + pp2limit);
+    my_paz.search(mkws.query, recPerPage, curSort, pp2filter, undefined, { limit: pp2limit });
 }
 
 function loadSelect ()
@@ -892,6 +911,19 @@ function mkws_html_all() {
     }
 }
 
+
+function run_auto_searches() {
+    var node = $('#mkwsRecords');
+    if (node.attr('autosearch')) {
+       var query = node.attr('query');
+       var sort = node.attr('sort');
+       debug("running auto search: '" + query + "' sorted by '" + sort + "'");
+       // ### currently ignoring sort
+       newSearch(query);
+    }
+}
+
+
 function mkws_set_lang()  {
     var lang = $.parseQuerystring().lang || mkws_config.lang;
     if (!lang || !mkws.locale_lang[lang]) {
@@ -982,7 +1014,8 @@ function mkws_service_proxy_auth(auth_url, auth_domain) {
        }
 
        debug("Service proxy auth successfully done");
-       mkws.service_proxy_auth = true;
+       mkws.authenticated = true;
+       run_auto_searches();
     });
 }