X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=www%2Fdemo%2Fsearch.js;h=4eb2d467d3da530e03e6725141d54cd19c582a48;hb=9bc5218957a69468292c9588981a8479ae5ab12c;hp=ee5e7236a2423697f7d84da865139460a43cdfac;hpb=fab767984b78da97735e944c7e3272cdd964cd06;p=pazpar2-moved-to-github.git diff --git a/www/demo/search.js b/www/demo/search.js index ee5e723..4eb2d46 100644 --- a/www/demo/search.js +++ b/www/demo/search.js @@ -1,4 +1,4 @@ -/* $Id: search.js,v 1.38 2007-01-17 17:24:44 quinn Exp $ +/* $Id: search.js,v 1.43 2007-01-18 19:32:06 quinn Exp $ * --------------------------------------------------- * Javascript container */ @@ -224,6 +224,16 @@ function displayname(name) return 'Publisher'; else if (name == 'md-url') return 'URL'; + else if (name == 'md-title') + return '@'; + else if (name == 'md-id') + return 'Local ID'; + else if (name == 'md-lccn') + return 'LCCN'; + else if (name == 'recid') + return '@'; + else if (name == 'location') + return '@'; else return name; } @@ -246,7 +256,7 @@ function paint_details_tr(name, dn) var dname = displayname(name); var ln = create_element('b', dname); var tln = document.createElement('td'); - tln.setAttribute('width', 70); + tln.setAttribute('width', 90); tln.setAttribute('valign', 'top'); tln.appendChild(ln); var tr = document.createElement('tr'); @@ -255,17 +265,12 @@ function paint_details_tr(name, dn) return tr; } -function paint_details(body, xml) +function paint_data_elements(target, node) { - // This is some ugly display code. Replace with your own ting o'beauty - clear_cell(body); - //body.appendChild(document.createElement('br')); - var nodes = xml.childNodes[0].childNodes; - var i; - var table = document.createElement('table'); - table.setAttribute('cellpadding', 2); + var nodes = node.childNodes; var dn = 0; var lastname = ''; + var i; for (i = 0; i < nodes.length; i++) { if (nodes[i].nodeType != 1) @@ -273,17 +278,21 @@ function paint_details(body, xml) var name = nodes[i].nodeName; if (name == 'recid' || name == 'md-title') continue; - if (name != lastname) + if (name != lastname && lastname != 'location') { if (dn) { var tr = paint_details_tr(lastname, dn); - table.appendChild(tr); + target.appendChild(tr); } dn = document.createElement('td'); lastname = name; } - + if (name == 'location') + { + target.appendChild(paint_details_tr('Location', paint_subrecord(nodes[i]))); + continue; + } if (!nodes[i].childNodes[0]) continue; var value = nodes[i].childNodes[0].nodeValue; @@ -307,15 +316,48 @@ function paint_details(body, xml) nv.onclick = function() { hyperlink_search(this); return false; }; } } + else if (name == 'md-lccn') + { + nv = document.createElement('span'); + nv.appendChild(document.createTextNode(value + ' ')); + var link = create_element('a', 'Show title in LoC'); + link.setAttribute('target', '_blank'); + link.setAttribute('href', 'http://catalog.loc.gov/cgi-bin/Pwebrecon.cgi?DB=local&CNT=10&CMD=10+records+per+page&CMD=lccn+' + value); + nv.appendChild(link); + + } else nv = document.createTextNode(value); dn.appendChild(nv); } - if (dn) + if (dn && lastname != 'location') { var tr = paint_details_tr(lastname, dn); - table.appendChild(tr); + target.appendChild(tr); } +} + +function paint_subrecord(node) +{ + var table = document.createElement('table'); + var zurl = node.getAttribute('id'); + var name = node.getAttribute('name'); + var tr; + if (name) + tr = paint_details_tr('Source', document.createTextNode(name)); + else + tr = paint_details_tr('Source', document.createTextNode(zurl)); + table.appendChild(tr); + paint_data_elements(table, node); + return table; +} + +function paint_details(body, xml) +{ + clear_cell(body); + var table = document.createElement('table'); + table.setAttribute('cellpadding', 2); + paint_data_elements(table, xml.childNodes[0]); body.appendChild(table); body.style.display = 'inline'; } @@ -513,9 +555,9 @@ function refine_query (obj) { term = term.replace(/[\(\)]/g, ''); if (cur_termlist == 'subject') - query_cell.value += ' and su=(' + term + ')'; + query_cell.value += ' and su=' + term; else if (cur_termlist == 'author') - query_cell.value += ' and au=(' + term + ')'; + query_cell.value += ' and au=' + term; else if (cur_termlist == 'date') query_cell.value += ' and date=' + term;