1 // Set up namespace and some state.
3 // Settings to pass to pz2.js
13 sourceMax: 16, // facets
17 pazpar2Path: '/pazpar2/search.pz2',
22 // pz2.js event handlers:
23 mkdru.pz2Init = function () {
28 mkdru.pz2Show = function (data) {
29 mkdru.totalRec = data.merged;
30 $('#mkdru-pager').html(Drupal.theme('mkdruPager', data, mkdru.curPage,
31 Math.ceil(mkdru.totalRec / mkdru.recPerPage)));
32 $('.mkdru-next').bind('click', mkdru.nextPage);
33 $('.mkdru-prev').bind('click', mkdru.prevPage);
36 for (var i = 0; i < data.hits.length; i++) {
37 html += Drupal.theme('mkdruResult', data.hits[i],
38 i + 1 + mkdru.recPerPage *
41 $('#mkdru-results').html(html);
44 mkdru.pz2Status = function (data) {
47 mkdru.pz2Term = function (data) {
49 for (var i = 0; i < data.xtargets.length && i < mkdru.sourceMax; i++ ) {
50 html += Drupal.theme('mkdruTerm', data.xtargets[i].name, data.xtargets[i].freq,
51 'mkdru-facet-link-source', data.xtargets[i].id);
53 $('#mkdru-sources').html(html);
56 for (var i = 0; i < data.subject.length && i < mkdru.subjectMax; i++ ) {
57 html += Drupal.theme('mkdruTerm', data.subject[i].name, data.subject[i].freq,
58 'mkdru-facet-link-subject', data.subject[i].id);
60 $('#mkdru-subjects').html(html);
63 for (var i = 0; i < data.author.length && i < mkdru.authorMax; i++ ) {
64 html += Drupal.theme('mkdruTerm', data.author[i].name, data.author[i].freq,
65 'mkdru-facet-link-author', data.author[i].id);
67 $('#mkdru-authors').html(html);
69 $('.mkdru-facet-link-source').bind('click', function (e) {
70 mkdru.limitTarget(this.getAttribute('target_id'), this.firstChild.nodeValue);
74 $('.mkdru-facet-link-subject').bind('click', function (e) {
75 mkdru.limitQuery('su', this.firstChild.nodeValue);
79 $('.mkdru-facet-link-author').bind('click', function (e) {
80 mkdru.limitQuery('au', this.firstChild.nodeValue);
85 mkdru.pz2ByTarget = function (data) {
92 mkdru.submitQuery = function () {
93 mkdru.submitted = true;
95 // mkdru.pollDropDowns();
100 mkdru.search = function () {
101 mkdru.pz2.search($('.mkdru-search input:text').attr('value'),
102 mkdru.recPerPage, mkdru.curSort, mkdru.curFilter);
105 mkdru.pollDropDowns = function () {
106 mkdru.recPerPage = $('#mkdru-perpage').value;
107 mkdru.curSort = $('#mkdru-sort').value;
108 if (!mkdru.submitted) return false;
110 mkdru.pz2.show(0, mkdru.recPerPage, mkdru.curSort);
113 mkdru.limitQuery = function (field, value) {
114 $('.mkdru-search input:text').attr('value', function () {
115 return this.value += ' and ' + field + '="' + value + '"';
120 mkdru.limitTarget = function (id, name) {
121 var navi = document.getElementById('mkdru-navi');
123 'Source: <a class="crossout" href="#" onclick="delimitTarget();return false;">'
125 navi.innerHTML += '<hr/>';
126 mkdru.curFilter = 'pz:id=' + id;
128 mkdru.pollDropDowns();
133 mkdru.resetPage = function () {
138 mkdru.showPage = function (pageNum) {
139 mkdru.curPage = pageNum;
140 mkdru.pz2.showPage(pageNum-1);
143 mkdru.nextPage = function () {
144 if (mkdru.totalRec - mkdru.recPerPage * mkdru.curPage > 0) {
145 mkdru.pz2.showNext();
150 mkdru.prevPage = function () {
151 if (mkdru.pz2.showPrev() != false) {
157 // wait until the DOM is ready, bind events
158 // and instantiate pz2 library
159 $(document).ready(function () {
160 $('.mkdru-search').bind('submit', mkdru.submitQuery);
161 $('.mkdru-search input:text').attr('value', '');
162 $('#mkdru-perpage').bind('change', function () { mkdru.pollDropDowns() });
163 $('#mkdru-sort').bind('change', function () { mkdru.pollDropDowns() });
164 mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
165 "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
166 "pazpar2path": mkdru.pazpar2path,
167 "oninit": mkdru.pz2Init,
168 "onstat": mkdru.pz2Status,
169 "onterm": mkdru.pz2Term,
170 "termlist": "xtargets,subject,author",
171 "onbytarget": mkdru.pz2ByTarget,
172 "usesessions" : mkdru.usesessions,
173 "showResponseType": mkdru.showResponseType,
174 "onrecord": mkdru.pz2Record } );