Package pazpar2-apache now makes /usr/share/pazpar2 available as /pazpar2.
[pazpar2-moved-to-github.git] / www / example / example_client.js
index 5629656..aad6303 100644 (file)
@@ -1,5 +1,5 @@
 /* A very simple client that shows a basic usage of the pz2.js
-** $Id: example_client.js,v 1.1 2007-05-18 11:36:39 jakub Exp $
+** $Id: example_client.js,v 1.4 2007-05-21 08:21:33 jakub Exp $
 */
 
 // create a parameters array and pass it to the pz2's constructor
@@ -15,7 +15,7 @@ my_paz = new pz2( { "onshow": my_onshow,
                     "onrecord": my_onrecord } );
 // some state vars
 var curPage = 1;
-var recPerPage = 15;
+var recPerPage = 20;
 var totalRec = 0;
 var curDetRecId = -1;
 var curDetRecData = null;
@@ -24,11 +24,16 @@ var curDetRecData = null;
 function domReady () 
 { 
     document.search.onsubmit = onFormSubmitEventHandler;
+    my_paz.stat();
+    my_paz.bytarget();
 }
 
 // when search button pressed
 function onFormSubmitEventHandler() 
 {
+    curPage = 1;
+    curDetRecId = -1;
+    totalRec = 0;
     my_paz.search(document.search.query.value, recPerPage, 'relevance');
     return false;
 }
@@ -43,17 +48,21 @@ function my_onshow(data) {
     var body = document.getElementById("body");
     body.innerHTML = "";
 
-    body.innerHTML +='<div>Displaying: ' + data.start + ' to ' + (data.start + data.num) +
-                     ' of ' + data.merged + ' (total not merged hits: ' + data.total + ')</div><hr/>';
+    body.innerHTML +='<hr/><div style="float: right">Displaying: ' 
+                    + data.start + ' to ' + (data.start + data.num) +
+                     ' of ' + data.merged + ' (total not merged hits: ' 
+                     + data.total + ')</div>';
 
-    body.innerHTML += '<span id="prev" onclick="pagerPrev();" style="cursor: pointer;">Prev</span> <b>|</b> ' 
-                + '<span id="next" onclick="pagerNext()" style="cursor: pointer;">Next</span><hr/>';
+    body.innerHTML += '<div style="float: clear"><span class="jslink" id="prev" onclick="pagerPrev();">'
+                    +'&#60;&#60; Prev</span> <b>|</b> ' 
+                    +'<span class="jslink" id="next" onclick="pagerNext()">'
+                    +'Next &#62;&#62;</span></div><hr/>';
     
     for (var i = 0; i < data.hits.length; i++) {
         var hit = data.hits[i];
-        body.innerHTML += '<div id="rec_' + hit.recid + '" onclick="showDetails(this.id)">'
+        body.innerHTML += '<div class="record" id="rec_' + hit.recid + '" onclick="showDetails(this.id)">'
                         +'<span>' + (i + 1 + recPerPage * ( curPage - 1)) + '. </span>'
-                        +'<span style="cursor: pointer;"><b>' + hit["md-title"] +
+                        +'<span class="jslink"><b>' + hit["md-title"] +
                         ' </b></span> by <span><i>' + hit["md-author"] + '</i></span></div>';
 
         if ( hit.recid == curDetRecId ) {
@@ -65,25 +74,33 @@ function my_onshow(data) {
 
 function my_onstat(data) {
     var stat = document.getElementById("stat");
-    stat.innerHTML = '<span>active clients: ' + data.activeclients + ' </span>' +
-                     '<span>hits: ' + data.hits + ' </span>' +
-                     '<span>records: ' + data.records + ' </span>' +
-                     '<span>clients: ' + data.clients + ' </span>' +
-                     '<span>searching: ' + data.searching + '</span>';
+    stat.innerHTML = '<span>Active clients: '+ data.activeclients
+                        + '/' + data.clients + ' | </span>'
+                        + '<span>Retrieved records: ' + data.records
+                        + '/' + data.hits + '</span>';
 }
 
 function my_onterm(data) {
     var termlist = document.getElementById("termlist");
-    termlist.innerHTML = "";
-    termlist.innerHTML  += "<div><b> --Author </b></div>";
-    for (var i = 0; i < data.author.length; i++ ) {
-        termlist.innerHTML += '<div><span>' + data.author[i].name + ' </span><span> (' + data.author[i].freq + ')</span></div>';
+    termlist.innerHTML = "<hr/><b>TERMLISTS:</b><hr/>";
+    termlist.innerHTML += '<div class="termtitle">.::Subjects</div>';
+    for (var i = 0; i < data.subject.length; i++ ) {
+        termlist.innerHTML += '<span>' 
+                            + data.subject[i].name 
+                            + ' </span><span> (' 
+                            + data.subject[i].freq 
+                            + ')</span><br/>';
     }
     termlist.innerHTML += "<hr/>";
-    termlist.innerHTML += "<div><b> --Subject </b></div>";
-    for (var i = 0; i < data.subject.length; i++ ) {
-        termlist.innerHTML += '<div><span>' + data.subject[i].name + ' </span><span> (' + data.subject[i].freq + ')</span></div>';
+    termlist.innerHTML += '<div class="termtitle">.::Authors</div>';
+    for (var i = 0; i < data.author.length; i++ ) {
+        termlist.innerHTML += '<span>' 
+                            + data.author[i].name 
+                            + ' </span><span> (' 
+                            + data.author[i].freq 
+                            + ')</span><br/>';
     }
+
 }
 
 function my_onrecord(data) {
@@ -98,31 +115,38 @@ function my_onrecord(data) {
 
 function my_onbytarget(data) {
     var targetDiv = document.getElementById("bytarget");
-    targetDiv.innerHTML = '<thead><tr><td>ID</td><td>Hits</td><td>Diag</td><td>Rec</td><td>State</td></tr></thead>';
+    var 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++ ) {
-        targetDiv.innerHTML += "<tr><td><b>" + data[i].id +
-                               "</b></td><td>" + data[i].hits +
-                               "</td><td>" + data[i].diagnostic +
-                               "</td><td>" + data[i].records +
-                               "</td><td>" + data[i].state + "</td></tr>";
+        table += "<tr><td>" + data[i].id +
+                    "</td><td>" + data[i].hits +
+                    "</td><td>" + data[i].diagnostic +
+                    "</td><td>" + data[i].records +
+                    "</td><td>" + data[i].state + "</td></tr>";
     }
+
+    table += '</tbody>';
+    targetDiv.innerHTML = table;
+
 }
 
 // detailed record drawing
 function showDetails ( prefixRecId ) {
     var recId = Number(prefixRecId.replace('rec_', ''));
     
-    // if the same clicked ignore
-    if ( recId == curDetRecId )
-        return;
-    
-    // if different remove the old one 
+    // remove current detailed view if any
     var detRecordDiv = document.getElementById('det_'+curDetRecId);
     // lovin DOM!
     if ( detRecordDiv )
             detRecordDiv.parentNode.removeChild(detRecordDiv);
 
+    // if the same clicked do not redraw
+    if ( recId == curDetRecId ) {
+        curDetRecId = -1;
+        return;
+    }
+
     curDetRecId = recId;
 
     // request the record
@@ -133,7 +157,8 @@ function drawCurDetails ()
 {
     var data = curDetRecData;
     var recordDiv = document.getElementById('rec_'+data.recid);
-    recordDiv.innerHTML += '<div id="det_'+data.recid+'"><table><tr><td><b>Ttle</b></td><td><b>:</b> ' + data["md-title"] +
+    recordDiv.innerHTML += '<div class="details" id="det_'+data.recid+
+                            '"><table><tr><td><b>Ttle</b></td><td><b>:</b> '+data["md-title"] +
                             "</td></tr><tr><td><b>Date</b></td><td><b>:</b> " + data["md-date"] +
                             "</td></tr><tr><td><b>Author</b></td><td><b>:</b> " + data["md-author"] +
                             "</td></tr><tr><td><b>Subject</b></td><td><b>:</b> " + data["md-subject"] + 
@@ -155,3 +180,24 @@ function pagerPrev() {
     if ( my_paz.showPrev() != false )
         curPage--;
 }
+
+// swithing view between targets and records
+
+function switchView(view) {
+    
+    var targets = document.getElementById('targetview');
+    var records = document.getElementById('recordview');
+    
+    switch(view) {
+        case 'targetview':
+            targets.style.display = "block";            
+            records.style.display = "none";
+            break;
+        case 'recordview':
+            targets.style.display = "none";            
+            records.style.display = "block";
+            break;
+        default:
+            alert('Unknown view.');
+    }
+}