make the code more robust
[mkws-moved-to-github.git] / experiments / spclient / mkws.js
index 9e14bdb..30bf3b2 100644 (file)
@@ -1,18 +1,29 @@
 /* A very simple client that shows a basic usage of the pz2.js
 */
 
+"use strict"; // HTML5
+
+if (!mkws_config)
+    var mkws_config = {}; // for the guys who forgot to define mkws_config...
+
+var pazpar2_url = mkws_config.pazpar2_url ? mkws_config.pazpar2_url : "/pazpar2/search.pz2";
+var service_proxy_url = mkws_config.service_proxy_url ? mkws_config.service_proxy_url : "/service-proxy/";
+
+var pazpar2path = mkws_config.use_service_proxy ? service_proxy_url : pazpar2_url;
+var usesessions = mkws_config.use_service_proxy ? false : true;
+
 // create a parameters array and pass it to the pz2's constructor
 // then register the form submit event with the pz2.search function
 // autoInit is set to true on default
 var my_paz = new pz2( { "onshow": my_onshow,
                     "showtime": 500,            //each timer (show, stat, term, bytarget) can be specified this way
-                    "pazpar2path": '/service-proxy/',
+                    "pazpar2path": pazpar2path,
                     "oninit": my_oninit,
                     "onstat": my_onstat,
                     "onterm": my_onterm,
                     "termlist": "xtargets,subject,author",
                     "onbytarget": my_onbytarget,
-                   "usesessions" : false,
+                   "usesessions" : usesessions,
                     "showResponseType": '', // or "json" (for debugging?)
                     "onrecord": my_onrecord } );
 // some state vars
@@ -384,7 +395,7 @@ function mkws_html_all(data) {
        sort_default: "relevance",
        perpage_default: 20,
        query_width: 50,
-       mkws_switch: true, /* show/hide Records|Targets menu */
+       switch: true, /* show/hide Records|Targets menu */
 
        dummy: "dummy"
     };
@@ -394,7 +405,44 @@ function mkws_html_all(data) {
        config[k] = data[k];
     }
 
+    // For some reason, doing this programmatically results in
+    // document.search.query being undefined, hence the raw HTML.
+    $("#mkwsSearch").html('\
+    <form id="searchForm" name="search">\
+      <input id="query" type="text" size="50" />\
+      <input id="button" type="submit" value="Search" />\
+    </form>');
 
+    $("#mkwsRecords").html('\
+      <table width="100%" border="0" cellpadding="6" cellspacing="0">\
+        <tr>\
+          <td width="250" valign="top">\
+            <div id="termlist"></div>\
+          </td>\
+          <td valign="top">\
+            <div id="ranking">\
+              <form name="select" id="select">\
+        Sort by' + mkws_html_sort(config) + '\
+        and show ' + mkws_html_perpage(config) + '\
+        per page.\
+       </form>\
+            </div>\
+            <div id="pager"></div>\
+            <div id="navi"></div>\
+            <div id="results"></div>\
+          </td>\
+        </tr>\
+      </table>\
+    </div>');
+
+    mkws_html_switch(config);
+    if (mkws_config.use_service_proxy)
+       mkws_service_proxy_auth(config.service_proxy_auth);
+
+    domReady();
+}
+
+function mkws_html_switch(config) {
     $("#mkwsSwitch").html($("<a/>", {
        href: '#',
        onclick: "switchView(\'records\')",
@@ -407,11 +455,20 @@ function mkws_html_all(data) {
        text: "Targets"
     }));
 
-    if (!config.mkws_switch) {
+    $("#mkwsTargets").html('\
+      <div id="bytarget">\
+       No information available yet.\
+      </div>');
+    $("#mkwsTargets").css("display", "none");
+
+    if (!config.switch) {
         $("#mkwsSwitch").css("display", "none");
     }
+}
 
+function mkws_html_sort(config) {
     var sort_html = '<select name="sort" id="sort">';
+
     for(var i = 0; i < config.sort.length; i++) {
        var key = config.sort[i][0];
        var val = config.sort[i].length == 1 ? config.sort[i][0] : config.sort[i][1];
@@ -424,7 +481,12 @@ function mkws_html_all(data) {
     }
     sort_html += '</select>';
 
+    return sort_html;
+}
+
+function mkws_html_perpage(config) {
     var perpage_html = '<select name="perpage" id="perpage">';
+
     for(var i = 0; i < config.perpage.length; i++) {
        var key = config.perpage[i];
 
@@ -436,43 +498,7 @@ function mkws_html_all(data) {
     }
     perpage_html += '</select>';
 
-    // For some reason, doing this programmatically results in
-    // document.search.query being undefined, hence the raw HTML.
-    $("#mkwsSearch").html('\
-    <form id="searchForm" name="search">\
-      <input id="query" type="text" size="50" />\
-      <input id="button" type="submit" value="Search" />\
-    </form>');
-
-    $("#mkwsRecords").html('\
-      <table width="100%" border="0" cellpadding="6" cellspacing="0">\
-        <tr>\
-          <td width="250" valign="top">\
-            <div id="termlist"></div>\
-          </td>\
-          <td valign="top">\
-            <div id="ranking">\
-              <form name="select" id="select">\
-        Sort by' + sort_html + '\
-        and show ' + perpage_html + '\
-        per page.\
-       </form>\
-            </div>\
-            <div id="pager"></div>\
-            <div id="navi"></div>\
-            <div id="results"></div>\
-          </td>\
-        </tr>\
-      </table>\
-    </div>');
-
-    $("#mkwsTargets").html('\
-      <div id="bytarget">\
-       No information available yet.\
-      </div>');
-    $("#mkwsTargets").css("display", "none");
-
-    domReady();
+    return perpage_html;
 }
 
 /*
@@ -480,8 +506,11 @@ function mkws_html_all(data) {
  * The username/password is configured in the apache config file
  * for the site.
  */
-function mkws_service_proxy_auth() {
-    var jqxhr = jQuery.get("/service-proxy-auth")
+function mkws_service_proxy_auth(auth_url) {
+    if (!auth_url)
+       auth_url = "/service-proxy-auth";
+
+    var jqxhr = jQuery.get(auth_url)
        .fail(function() {
            alert("service proxy authentication failed, give up!");
        })
@@ -498,5 +527,5 @@ function mkws_service_proxy_auth() {
        });
 }
 
+/* magic */
 $(document).ready(function() { mkws_html_all(mkws_config) });
-$(document).ready(function() { mkws_service_proxy_auth(); });