Move curSort global into mkws.sort
[mkws-moved-to-github.git] / tools / htdocs / mkws.js
index 8c4adf5..1a80b10 100644 (file)
@@ -5,6 +5,8 @@
 
 // Set up namespace and some state.
 var mkws = {
+    sort: 'relevance',
+    authenticated: false,
     filters: [],
 };
 
@@ -231,7 +233,6 @@ var recPerPage = 20;
 var totalRec = 0;
 var curDetRecId = '';
 var curDetRecData = null;
-var curSort = 'relevance';
 var submitted = false;
 var SourceMax = 16;
 var SubjectMax = 10;
@@ -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,14 +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()
@@ -423,7 +435,7 @@ function onSelectDdChange()
     if (!submitted) return false;
     resetPage();
     loadSelect();
-    my_paz.show(0, recPerPage, curSort);
+    my_paz.show(0, recPerPage, mkws.sort);
     return false;
 }
 
@@ -433,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) {
@@ -451,15 +468,15 @@ 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, mkws.sort, pp2filter, undefined, { limit: pp2limit });
 }
 
 function loadSelect ()
 {
     if (document.mkwsSelect) {
        if (document.mkwsSelect.mkwsSort)
-           curSort = document.mkwsSelect.mkwsSort.value;
+           mkws.sort = document.mkwsSelect.mkwsSort.value;
        if (document.mkwsSelect.mkwsPerpage)
            recPerPage = document.mkwsSelect.mkwsPerpage.value;
     }
@@ -894,6 +911,19 @@ function mkws_html_all() {
     }
 }
 
+
+function run_auto_searches() {
+    var node = $('#mkwsRecords');
+    if (node.attr('autosearch')) {
+       var query = node.attr('autosearch');
+       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]) {
@@ -984,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();
     });
 }