initial configuration for mkws
[mkws-moved-to-github.git] / experiments / spclient / mkws.js
index 35f3490..5dee695 100644 (file)
@@ -41,22 +41,22 @@ function my_onshow(data) {
     // move it out
     var pager = document.getElementById("pager");
     pager.innerHTML = "";
-    pager.innerHTML +='<hr/><div style="float: right">Displaying: ' 
+    pager.innerHTML +='<hr/><div style="float: right">Displaying: '
                     + (data.start + 1) + ' to ' + (data.start + data.num) +
-                     ' of ' + data.merged + ' (found: ' 
+                     ' of ' + data.merged + ' (found: '
                      + data.total + ')</div>';
     drawPager(pager);
     // navi
     var results = document.getElementById("results");
-  
+
     var html = [];
     for (var i = 0; i < data.hits.length; i++) {
         var hit = data.hits[i];
              html.push('<div class="record" id="recdiv_'+hit.recid+'" >'
             +'<span>'+ (i + 1 + recPerPage * (curPage - 1)) +'. </span>'
             +'<a href="#" id="rec_'+hit.recid
-            +'" onclick="showDetails(this.id);return false;"><b>' 
-            + hit["md-title"] +' </b></a>'); 
+            +'" onclick="showDetails(this.id);return false;"><b>'
+            + hit["md-title"] +' </b></a>');
              if (hit["md-title-remainder"] !== undefined) {
                html.push('<span>' + hit["md-title-remainder"] + ' </span>');
              }
@@ -72,10 +72,10 @@ function my_onshow(data) {
 }
 
 function my_onstat(data) {
-    var stat = document.getElementById("stat");
+    var stat = document.getElementById("mkwsStat");
     if (stat == null)
        return;
-    
+
     stat.innerHTML = '<b>STATUS INFO</b> -- Active clients: '
                         + data.activeclients
                         + '/' + data.clients + ' -- </span>'
@@ -88,22 +88,22 @@ function my_onterm(data) {
     termlists.push('<hr/><b>TERMLISTS:</b><hr/><div class="termtitle">Sources</div>');
     for (var i = 0; i < data.xtargets.length && i < SourceMax; i++ ) {
         termlists.push('<a href="#" target_id='+data.xtargets[i].id
-            + ' onclick="limitTarget(this.getAttribute(\'target_id\'), this.firstChild.nodeValue);return false;">' + data.xtargets[i].name 
+            + ' onclick="limitTarget(this.getAttribute(\'target_id\'), this.firstChild.nodeValue);return false;">' + data.xtargets[i].name
         + ' </a><span> (' + data.xtargets[i].freq + ')</span><br/>');
     }
-     
+
     termlists.push('<hr/><div class="termtitle">Subjects</div>');
     for (var i = 0; i < data.subject.length && i < SubjectMax; i++ ) {
-        termlists.push('<a href="#" onclick="limitQuery(\'su\', this.firstChild.nodeValue);return false;">' + data.subject[i].name + '</a><span>  (' 
+        termlists.push('<a href="#" onclick="limitQuery(\'su\', this.firstChild.nodeValue);return false;">' + data.subject[i].name + '</a><span>  ('
               + data.subject[i].freq + ')</span><br/>');
     }
-     
+
     termlists.push('<hr/><div class="termtitle">Authors</div>');
     for (var i = 0; i < data.author.length && i < AuthorMax; i++ ) {
-        termlists.push('<a href="#" onclick="limitQuery(\'au\', this.firstChild.nodeValue);return false;">' 
-                            + data.author[i].name 
-                            + ' </a><span> (' 
-                            + data.author[i].freq 
+        termlists.push('<a href="#" onclick="limitQuery(\'au\', this.firstChild.nodeValue);return false;">'
+                            + data.author[i].name
+                            + ' </a><span> ('
+                            + data.author[i].freq
                             + ')</span><br/>');
     }
     var termlist = document.getElementById("termlist");
@@ -126,7 +126,7 @@ function my_onbytarget(data) {
     var targetDiv = document.getElementById("bytarget");
     var table ='<table><thead><tr><td>Target ID</td><td>Hits</td><td>Diags</td>'
         +'<td>Records</td><td>State</td></tr></thead><tbody>';
-    
+
     for (var i = 0; i < data.length; i++ ) {
         table += "<tr><td>" + data[i].id +
             "</td><td>" + data[i].hits +
@@ -143,8 +143,8 @@ function my_onbytarget(data) {
 ////////////////////////////////////////////////////////////////////////////////
 
 // wait until the DOM is ready
-function domReady () 
-{ 
+function domReady ()
+{
     document.search.onsubmit = onFormSubmitEventHandler;
     document.search.query.value = '';
     document.select.sort.onchange = onSelectDdChange;
@@ -152,7 +152,7 @@ function domReady ()
 }
 
 // when search button pressed
-function onFormSubmitEventHandler() 
+function onFormSubmitEventHandler()
 {
     resetPage();
     loadSelect();
@@ -198,7 +198,7 @@ function limitQuery (field, value)
 function limitTarget (id, name)
 {
     var navi = document.getElementById('navi');
-    navi.innerHTML = 
+    navi.innerHTML =
         'Source: <a class="crossout" href="#" onclick="delimitTarget();return false;">'
         + name + '</a>';
     navi.innerHTML += '<hr/>';
@@ -213,7 +213,7 @@ function delimitTarget ()
 {
     var navi = document.getElementById('navi');
     navi.innerHTML = '';
-    curFilter = null; 
+    curFilter = null;
     resetPage();
     loadSelect();
     triggerSearch();
@@ -225,8 +225,8 @@ function drawPager (pagerDiv)
     //client indexes pages from 1 but pz2 from 0
     var onsides = 6;
     var pages = Math.ceil(totalRec / recPerPage);
-    
-    var firstClkbl = ( curPage - onsides > 0 ) 
+
+    var firstClkbl = ( curPage - onsides > 0 )
         ? curPage - onsides
         : 1;
 
@@ -248,7 +248,7 @@ function drawPager (pagerDiv)
         middle += '<a href="#" onclick="showPage(' + i + ')"> '
             + numLabel + ' </a>';
     }
-    
+
     var next = '<b> | </b><span id="next">Next &#62;&#62;</span>';
     if (pages - curPage > 0)
         next = '<b> | </b><a href="#" id="next" onclick="pagerNext()">'
@@ -262,7 +262,7 @@ function drawPager (pagerDiv)
     if (lastClkbl < pages)
         postdots = '...';
 
-    pagerDiv.innerHTML += '<div style="float: clear">' 
+    pagerDiv.innerHTML += '<div style="float: clear">'
         + prev + predots + middle + postdots + next + '</div><hr/>';
 }
 
@@ -289,17 +289,17 @@ function pagerPrev() {
 // swithing view between targets and records
 
 function switchView(view) {
-    
+
     var targets = document.getElementById('mkwsTargets');
     var records = document.getElementById('mkwsRecords');
-    
+
     switch(view) {
         case 'targets':
-            targets.style.display = "block";            
+            targets.style.display = "block";
             records.style.display = "none";
             break;
         case 'records':
-            targets.style.display = "none";            
+            targets.style.display = "none";
             records.style.display = "block";
             break;
         default:
@@ -312,7 +312,7 @@ function showDetails (prefixRecId) {
     var recId = prefixRecId.replace('rec_', '');
     var oldRecId = curDetRecId;
     curDetRecId = recId;
-    
+
     // remove current detailed view if any
     var detRecordDiv = document.getElementById('det_'+oldRecId);
     // lovin DOM!
@@ -371,17 +371,33 @@ function renderDetails(data, marker)
     return details;
 }
 
-
-$(document).ready(function() { 
-    $("#mkwsSwitch").html($("<a/>", { href: '#',
-                                     onclick: "switchView(\'records\')",
-                                     text: "Record Browser",
-                                   }));
+/*
+ * All the HTML stuff to render the search forms and
+ * result pages.
+ */
+function mkws_html_all(data) {
+
+    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,
+
+       dummy: "dummy"
+    };
+
+    $("#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",
+    }));
 
     // For some reason, doing this programmatically results in
     // document.search.query being undefined, hence the raw HTML.
@@ -391,6 +407,30 @@ $(document).ready(function() {
       <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\
+        <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>\
+        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.\
+       </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.\
@@ -398,8 +438,31 @@ $(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(); });
+$(document).ready(function() { mkws_service_proxy_auth(); });
 
-});