sort menu is configurable
[mkws-moved-to-github.git] / experiments / spclient / mkws.js
index 72531f3..f1e0e9e 100644 (file)
@@ -371,17 +371,58 @@ function renderDetails(data, marker)
     return details;
 }
 
+/*
+ * All the HTML stuff to render the search forms and
+ * result pages.
+ */
+function mkws_html_all(data) {
+
+    /* default config */
+    var config = {
+       sort: [ ["relevance"], ["title:1", "title"], ["date:0", "newest"], ["date:1", "oldest"]],
+       perpage: [10, 20, 30, 50],
+       sort_default: "relevance",
+       perpage_default: 20,
+       query_width: 50,
+       mkws_switch: true, /* show/hide Records|Targets menu */
+
+       dummy: "dummy"
+    };
+
+    /* override standard config values by function parameters */
+    for (var k in data) {
+       config[k] = data[k];
+    }
+
 
-$(document).ready(function() {
-    $("#mkwsSwitch").html($("<a/>", { href: '#',
-                                     onclick: "switchView(\'records\')",
-                                     text: "Record Browser",
-                                   }));
+    $("#mkwsSwitch").html($("<a/>", {
+       href: '#',
+       onclick: "switchView(\'records\')",
+       text: "Records"
+    }));
     $("#mkwsSwitch").append($("<span/>", { text: " | " }));
-    $("#mkwsSwitch").append($("<a/>", { href: '#',
-                                       onclick: "switchView(\'targets\')",
-                                       text: "Target Info",
-                                     }));
+    $("#mkwsSwitch").append($("<a/>", {
+       href: '#',
+       onclick: "switchView(\'targets\')",
+       text: "Targets"
+    }));
+
+    if (!config.mkws_switch) {
+        $("#mkwsSwitch").css("display", "none");
+    }
+
+    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];
+
+       sort_html += '<option value="' + key + '"';
+       if (key == config.sort_default) {
+           sort_html += ' selected="selected"';
+       }
+       sort_html += '>' + val + '</option>';
+    }
+    sort_html += '</select>';
 
     // For some reason, doing this programmatically results in
     // document.search.query being undefined, hence the raw HTML.
@@ -400,8 +441,7 @@ $(document).ready(function() {
           <td valign="top">\
             <div id="ranking">\
               <form name="select" id="select">\
-        Sort by\
-        <select name="sort" id="sort"><option value="relevance" selected="selected">relevance</option><option value="title:1">title</option><option value="date:0">newest</option><option value="date:1">oldest</option></select>\
+        Sort by' + sort_html + '\
         and show \
         <select name="perpage" id="perpage"><option value="10">10</option><option value="20" selected="selected">20</option><option value="30">30</option><option value="50">50</option></select>\
         per page.\
@@ -422,8 +462,30 @@ $(document).ready(function() {
     $("#mkwsTargets").css("display", "none");
 
     domReady();
+}
 
+/*
+ * Run service-proxy authentication in background (after page load).
+ * 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")
-       .fail(function() { alert("service proxy authentifiction failed"); });
+       .fail(function() {
+           alert("service proxy authentication failed, give up!");
+       })
+       .success(function(data) {
+           if (!jQuery.isXMLDoc(data)) {
+               alert("service proxy auth response document is not valid XML document, give up!");
+               return;
+           }
+           var status = $(data).find("status");
+           if (status.text() != "OK") {
+               alert("service proxy auth repsonse status: " + status.text() + ", give up!");
+               return;
+           }
+       });
+}
 
-});
+$(document).ready(function() { mkws_html_all(mkws_config) });
+$(document).ready(function() { mkws_service_proxy_auth(); });