X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=www%2Fjsdemo%2Fexample_client.js;h=623353763dbb5192d3f44ae3efb5e27c1ee0b345;hb=ae2e813a1722084a063e90873c03ede549c82dc5;hp=0863997a7d04f281e6eb10f97ba759c86849a03d;hpb=3ccd9f211e9817a1e193c12c7ad19dd785f2321a;p=pazpar2-moved-to-github.git diff --git a/www/jsdemo/example_client.js b/www/jsdemo/example_client.js index 0863997..6233537 100644 --- a/www/jsdemo/example_client.js +++ b/www/jsdemo/example_client.js @@ -1,72 +1,76 @@ /* A very simple client that shows a basic usage of the pz2.js -** $Id: example_client.js,v 1.2 2007-06-22 10:54:46 adam Exp $ +** $Id: example_client.js,v 1.6 2008-01-15 13:59:18 jakub Exp $ */ // 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 usesessions = true; +var pazpar2path = '/pazpar2/search.pz2'; +if (document.location.hash == '#nosessions') { + usesessions = false; + pazpar2path = '/pazpar2-proxy/'; +} my_paz = new pz2( { "onshow": my_onshow, "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way - "pazpar2path": "/pazpar2/search.pz2", + "pazpar2path": pazpar2path, + "oninit": my_oninit, "onstat": my_onstat, "onterm": my_onterm, - "termlist": "subject,author", + "termlist": "xtargets,subject,author", "onbytarget": my_onbytarget, - "usesessions" : true, + "usesessions" : usesessions, "onrecord": my_onrecord } ); // some state vars var curPage = 1; var recPerPage = 20; var totalRec = 0; -var curDetRecId = -1; +var curDetRecId = ''; var curDetRecData = null; - -// wait until the DOM is ready -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; -} +var curSort = 'relevance'; +var curFilter = null; +var submitted = false; // // pz2.js event handlers: // +function my_oninit() { + my_paz.stat(); + my_paz.bytarget(); +} function my_onshow(data) { totalRec = data.merged; - var body = document.getElementById("body"); - body.innerHTML = ""; + // move it out + var pager = document.getElementById("pager"); + pager.innerHTML = ""; - body.innerHTML +='
Displaying: ' + pager.innerHTML +='
Displaying: ' + data.start + ' to ' + (data.start + data.num) + - ' of ' + data.merged + ' (total not merged hits: ' + ' of ' + data.merged + ' (found: ' + data.total + ')
'; + drawPager(pager); - body.innerHTML += '
' - +'<< Prev | ' - +'' - +'Next >>

'; + // navi + var results = document.getElementById("results"); + results.innerHTML = ""; for (var i = 0; i < data.hits.length; i++) { var hit = data.hits[i]; - body.innerHTML += '
' - +'' + (i + 1 + recPerPage * ( curPage - 1)) + '. ' - +'' + hit["md-title"] + - ' by ' + hit["md-author"] + '
'; - + var html = '
' + +'' + (i + 1 + recPerPage * ( curPage - 1)) + '. ' + +'' + hit["md-title"] + + ' '; + if (hit["md-title-remainder"] !== undefined) { + html += '' + hit["md-title-remainder"] + ''; + } + if (hit["md-title-responsibility"] !== undefined) { + html += '' + hit["md-title-responsibility"] + ''; + } + html += '
'; + results.innerHTML += html; if ( hit.recid == curDetRecId ) { drawCurDetails(); } @@ -76,29 +80,46 @@ function my_onshow(data) { function my_onstat(data) { var stat = document.getElementById("stat"); - stat.innerHTML = 'Active clients: '+ data.activeclients - + '/' + data.clients + ' | ' + stat.innerHTML = ' .:STATUS INFO -- Active clients: ' + + data.activeclients + + '/' + data.clients + ' -- ' + 'Retrieved records: ' + data.records - + '/' + data.hits + ''; + + '/' + data.hits + ' :.'; } function my_onterm(data) { var termlist = document.getElementById("termlist"); termlist.innerHTML = "
TERMLISTS:
"; + + termlist.innerHTML += '
.::Sources
'; + for (var i = 0; i < data.xtargets.length; i++ ) { + termlist.innerHTML += '' + + data.xtargets[i].name + + ' (' + + data.xtargets[i].freq + + ')
'; + } + + termlist.innerHTML += "
"; + termlist.innerHTML += '
.::Subjects
'; for (var i = 0; i < data.subject.length; i++ ) { - termlist.innerHTML += '' + termlist.innerHTML += '' + data.subject[i].name - + ' (' + + ' (' + data.subject[i].freq + ')
'; } + termlist.innerHTML += "
"; + termlist.innerHTML += '
.::Authors
'; for (var i = 0; i < data.author.length; i++ ) { - termlist.innerHTML += '' + termlist.innerHTML += '' + data.author[i].name - + ' (' + + ' (' + data.author[i].freq + ')
'; } @@ -133,42 +154,139 @@ function my_onbytarget(data) { } -// detailed record drawing -function showDetails ( prefixRecId ) { - var recId = Number(prefixRecId.replace('rec_', '')); +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// wait until the DOM is ready +function domReady () +{ + document.search.onsubmit = onFormSubmitEventHandler; + document.search.query.value = ''; + document.select.sort.onchange = onSelectDdChange; + document.select.perpage.onchange = onSelectDdChange; +} + +// when search button pressed +function onFormSubmitEventHandler() +{ + resetPage(); + loadSelect(); + triggerSearch(); + submitted = true; + return false; +} + +function onSelectDdChange() +{ + if (!submitted) return false; + resetPage(); + loadSelect(); + my_paz.show(0, recPerPage, curSort); + return false; +} + +function resetPage() +{ + curPage = 1; + totalRec = 0; +} + +function triggerSearch () +{ + my_paz.search(document.search.query.value, recPerPage, curSort, curFilter); +} + +function loadSelect () +{ + curSort = document.select.sort.value; + recPerPage = document.select.perpage.value; +} + +// limit the query after clicking the facet +function limitQuery (field, value) +{ + document.search.query.value += ' and ' + field + '="' + value + '"'; + onFormSubmitEventHandler(); +} + +// limit by target functions +function limitTarget (id, name) +{ + var navi = document.getElementById('navi'); + navi.innerHTML = + 'Source: ' + + name + ''; + navi.innerHTML += '
'; + curFilter = 'pz:id=' + id; + resetPage(); + loadSelect(); + triggerSearch(); + return false; +} + +function delimitTarget () +{ + var navi = document.getElementById('navi'); + navi.innerHTML = ''; + curFilter = null; + resetPage(); + loadSelect(); + triggerSearch(); + return false; +} + +function drawPager (pagerDiv) +{ + //client indexes pages from 1 but pz2 from 0 + var onsides = 6; + var pages = Math.ceil(totalRec / recPerPage); - // remove current detailed view if any - var detRecordDiv = document.getElementById('det_'+curDetRecId); - // lovin DOM! - if ( detRecordDiv ) - detRecordDiv.parentNode.removeChild(detRecordDiv); + var firstClkbl = ( curPage - onsides > 0 ) + ? curPage - onsides + : 1; - // if the same clicked do not redraw - if ( recId == curDetRecId ) { - curDetRecId = -1; - return; + var lastClkbl = firstClkbl + 2*onsides < pages + ? firstClkbl + 2*onsides + : pages; + + var prev = '<< Prev | '; + if (curPage > 1) + var prev = ' | '; + + var middle = ''; + for(var i = firstClkbl; i <= lastClkbl; i++) { + var numLabel = i; + if(i == curPage) + numLabel = '' + i + ''; + + middle += ' ' + + numLabel + ' '; } + + var next = ' | Next >>'; + if (pages - curPage > 0) + var next = ' | '; - curDetRecId = recId; + predots = ''; + if (firstClkbl > 1) + predots = '...'; - // request the record - my_paz.record(recId); + postdots = ''; + if (lastClkbl < pages) + postdots = '...'; + + pagerDiv.innerHTML += '
' + + prev + predots + middle + postdots + next + '

'; } -function drawCurDetails () +function showPage (pageNum) { - var data = curDetRecData; - var recordDiv = document.getElementById('rec_'+data.recid); - recordDiv.innerHTML += '
Ttle: '+data["md-title"] + - "
Date: " + data["md-date"] + - "
Author: " + data["md-author"] + - "
Subject: " + data["md-subject"] + - "
Location: " + data["location"][0].name + - "
"; + curPage = pageNum; + my_paz.showPage( curPage - 1 ); } - // simple paging functions function pagerNext() { @@ -203,3 +321,46 @@ function switchView(view) { alert('Unknown view.'); } } + +// detailed record drawing +function showDetails ( prefixRecId ) { + var recId = prefixRecId.replace('rec_', ''); + + // 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 = ''; + return; + } + + curDetRecId = recId; + + // request the record + my_paz.record(recId); +} + +function drawCurDetails () +{ + var data = curDetRecData; + var recordDiv = document.getElementById('rec_'+data.recid); + var details = ""; + if (data["md-title"] != undefined) + details += 'Ttle: '+data["md-title"] + ''; + if (data["md-date"] != undefined) + details += 'Date: ' + data["md-date"] + ''; + if (data["md-author"] != undefined) + details += 'Author: ' + data["md-author"] + ''; + if (data["md-electronic-url"] != undefined) + details += 'URL: ' + data["md-electronic-url"] + '' + ''; + if (data["location"][0]["md-subject"] != undefined) + details += 'Subject: ' + data["location"][0]["md-subject"] + ''; + if (data["location"][0]["@name"] != undefined) + details += 'Location: ' + data["location"][0]["@name"] + " (" +data["location"][0]["@id"] + ")" + ''; + recordDiv.innerHTML += '
' + details + '
'; +} + //EOF