/*
-** $Id: client.js,v 1.10 2007-04-02 15:50:27 jakub Exp $
+** $Id: client.js,v 1.22 2007-04-30 14:28:09 quinn Exp $
** MasterKey - pazpar2's javascript client .
*/
/* start with creating pz2 object and passing it event handlers*/
-var my_paz = new pz2( { "onshow": my_onshow,
+var my_paz = new pz2({
+ "onshow": my_onshow,
//"showtime": 1000,
//"onstat": my_onstat,
"onterm": my_onterm,
"termlist": "xtargets,subject,author,date",
//"onbytarget": my_onbytarget,
- "onrecord": my_onrecord } );
+ "onrecord": my_onrecord,
+ "errorhandler": my_errorhandler
+ });
/* some state variable */
var currentSort = 'relevance';
var currentResultsPerPage = 20;
-/*var currentQuery = null;
-var currentQueryArr = new Array();*/
var currentPage = 0;
var curQuery = new pzQuery();
-/*var currentFilter = undefined;*/
-/*var currentFilterName = null;*/
var currentDetailedId = null;
var currentDetailedData = null;
var termStartup = true;
var advancedOn = false;
+var showBriefLocations = false;
+
/* wait until the DOM is ready and register basic handlers */
$(document).ready( function() {
document.search.onsubmit = onFormSubmitEventHandler;
curQuery.clearFilter();
fireSearch();
drawBreadcrumb();
+ $('div.motd').empty();
$('div.content').show();
$("div.leftbar").show();
return false;
** pz2 Event Handlers ***********************************************************
*********************************************************************************
*/
+function my_errorhandler(err)
+{
+ switch (err.message)
+ {
+ case 'QUERY': alert("Your query was not understood. Please rephrase."); break;
+ default: alert(err.message);
+ }
+}
/*
** data.hits["md-title"], data.hits["md-author"], data.hits.recid, data.hits.count
if( author ) {
recBody.append('<i> by </i>');
$('<a name="author" class="recAuthor">'+author+'</a>\n').click(function(){
- refine(this.name, this.firstChild.nodeValue) }).appendTo(recBody);
+ refine("authoronly", this.firstChild.nodeValue) }).appendTo(recBody);
}
if( currentDetailedId == id ) {
drawDetailedRec(detailBox);
}
- if( count > 1 ) {
- recBody.append('<span> ('+count+')</span>');
- }
+ if (showBriefLocations) {
+ var location = data.hits[i]['location'];
+ var l;
+ var list = '';
+ for (l in location) {
+ if (list)
+ list += ', ';
+ list += location[l].name;
+ }
+ recBody.append('<span> ('+list+')</span>');
+ }
+ else {
+ if( count > 1 ) {
+ recBody.append('<span> ('+count+')</span>');
+ }
+ }
recsBody.append('<div class="resultNum">'+(currentPage*currentResultsPerPage+i+1)+'.</a>');
recsBody.append(recBody);
*/
function my_onterm(data)
{
- var termLists = $("#termlists");
-
if(termStartup)
{
+ var termLists = $("#termlists");
+
for(var key in data){
if (key == "activeclients")
continue;
for(var i = 0; i < data[key].length; i++)
{
if (key == "xtargets"){
- var listItem = $('<a class="sub" name="xtarget" value="'+data[key][i].id+'">'+data[key][i].name
- /*+'<span> ('+data[key][i].freq+')</span>'*/+'</a>');
+ var listItem = $('<a class="sub" name="xtarget" value="'+data[key][i].id+'">'+data[key][i].name +'<span> ('+data[key][i].freq+')</span>'+'</a>');
listItem.click(function(){
refine(this.name, this.attributes[0].nodeValue, this.firstChild.nodeValue) });
listItem.appendTo(listEntries);
} else {
var listItem = $('<a class="sub" name="'+key+'">'+data[key][i].name
- /*+'<span> ('+data[key][i].freq+')</span>'*/+'</a>');
+ +'<span> ('+data[key][i].freq+')</span>'+'</a>');
listItem.click(function(){ refine(this.name, this.firstChild.nodeValue) });
listItem.appendTo(listEntries);
}
if (key == "activeclients")
continue;
var listEntries = $('#term_'+key).children('.termEntries');
- listEntries.empty()
+ if( data[key].length ) listEntries.empty();
for(var i = 0; i < data[key].length; i++){
if (key == "xtargets"){
- var listItem = $('<a class="sub" name="xtarget" value="'+data[key][i].id+'">'+data[key][i].name
- /*+'<span> ('+data[key][i].freq+')</span>'*/+'</a>').click(function(){
+ var listItem = $('<a class="sub" name="xtarget" value="'+data[key][i].id+'">'+data[key][i].name+'<span> ('+data[key][i].freq+')</span>'+'</a>').click(function(){
refine(this.name, this.attributes[0].nodeValue, this.firstChild.nodeValue) });
listItem.appendTo(listEntries);
} else {
var listItem = $('<a class="sub" name="'+key+'">'+data[key][i].name
- /*+'<span> ('+data[key][i].freq+')</span>'*/+'</a>').click(function(){
+ +'<span> ('+data[key][i].freq+')</span>'+'</a>').click(function(){
refine(this.name, this.firstChild.nodeValue) });
listItem.appendTo(listEntries);
}
$('div.showing').empty().text('No records to show.');
$('div.pages').empty().html(' ');
$('div.records').empty();
+ currentDetailedId = null;
if( !curQuery.totalLength() )
return false;
my_paz.search(curQuery.toCCL(), currentResultsPerPage, currentSort, curQuery.getFilterString() );
if( detailBox == undefined )
detailBox = $('<div class="detail"></div>').appendTo($('#rec_'+currentDetailedId));
- detailBox.append('Details:<hr/>');
var detailTable = $('<table></table>');
- var recDate = currentDetailedData["md-date"];
- var recSubject = currentDetailedData["md-subject"];
var recLocation = currentDetailedData["location"];
- if( recDate )
- detailTable.append('<tr><td class="item">Published:</td><td>'+recDate+'</td></tr>');
- if( recSubject )
- detailTable.append('<tr><td class="item">Subject:</td><td>'+recSubject+'</td></tr>');
- if( recLocation )
- detailTable.append('<tr><td class="item">Available at:</td><td> </td></tr>');
-
- for(var i=0; i < recLocation.length; i++)
- {
- detailTable.append('<tr><td class="item"> </td><td>'+recLocation[i].name+'</td></tr>');
+ var hdtarget;
+ if( recLocation ) {
+ hdtarget = $('<tr><td class="item" align="right">Available at: </td></tr>');
+ detailTable.append(hdtarget);
+
+ for(var i=0; i < recLocation.length; i++)
+ {
+ if (!hdtarget)
+ hdtarget = $('<tr><td class="item"> </td></tr>').appendTo(detailTable);
+ var url = recLocation[i]["md-url"];
+ var description = recLocation[i]["md-description"];
+ var date = recLocation[i]["md-date"];
+ var citation = recLocation[i]["md-citation"];
+ hdtarget.append('<td><b>'+recLocation[i].name+'</b></td>');
+ if (date)
+ detailTable.append($('<tr><td align="right">Date: </td><td>'+date+'</td></tr>'));
+ if (citation)
+ detailTable.append($('<tr><td align="right" valign="top">Citation: </td><td>'+citation+'</td></tr>'));
+ if (description)
+ detailTable.append($('<tr><td> </td><td>'+description+'</td></tr>'));
+ if (url) {
+ var tline = $('<tr><td> </td></tr>');
+ var td = $('<td></td>').appendTo(tline);
+ var tlink = $('<a>Go to resource</a>');
+ tlink.attr('href', url);;
+ tlink.attr('target', '_blank');
+ tlink.appendTo(td);
+ detailTable.append(tline);
+ }
+ hdtarget = undefined;
+ }
}
detailTable.appendTo(detailBox);
function refine(field, value, opt)
{
switch(field) {
+ case "authoronly": curQuery.reset(); curQuery.addTerm('au', value); break;
case "author": curQuery.addTerm('au', value); break;
case "title": curQuery.addTerm('ti', value); break;
case "date": curQuery.addTerm('date', value); break;
{
switch( curQuery.getTermFieldByIdx(i) )
{
- case "au": document.search.author.value += curQuery.getTermValueByIdx(i) + ';'; break;
- case "ti": document.search.title.value += curQuery.getTermValueByIdx(i) + ';'; break;
- case "date": document.search.date.value += curQuery.getTermValueByIdx(i) + ';'; break;
- case "su": document.search.subject.value += curQuery.getTermValueByIdx(i) + ';'; break;
+ case "au": document.search.author.value += curQuery.getTermValueByIdx(i) + '; '; break;
+ case "ti": document.search.title.value += curQuery.getTermValueByIdx(i) + '; '; break;
+ case "date": document.search.date.value += curQuery.getTermValueByIdx(i) + '; '; break;
+ case "su": document.search.subject.value += curQuery.getTermValueByIdx(i) + '; '; break;
}
}
}