1 // Set up namespace and some state.
3 // Settings to pass to pz2.js
4 usesessions: Drupal.settings.mkdru.use_sessions === '1',
5 showResponseType: 'json',
13 sourceMax: Drupal.settings.mkdru.source_max,
14 subjectMax: Drupal.settings.mkdru.subject_max,
15 authorMax: Drupal.settings.mkdru.author_max,
17 pazpar2Path: Drupal.settings.mkdru.pz2_path
22 // pz2.js event handlers:
23 mkdru.pz2Init = function () {
24 if (mkdru.query) mkdru.triggerSearch();
26 //mkdru.pz2.bytarget();
29 mkdru.pz2Show = function (data) {
30 mkdru.totalRec = data.merged;
32 var pagerHtml = Drupal.theme('mkdruPager', data, mkdru.curPage,
33 Math.ceil(mkdru.totalRec / mkdru.recPerPage));
34 $('.mkdru-pager').html(pagerHtml);
35 $('.mkdru-next').bind('click', mkdru.nextPage);
36 $('.mkdru-prev').bind('click', mkdru.prevPage);
38 var countsHtml = 'Displaying: ' + (data.start + 1) + ' to '
39 + (data.start + data.num) + ' of ' + data.merged + ' (found: ' + data.total + ')';
40 $('.mkdru-counts').html(countsHtml);
43 for (var i = 0; i < data.hits.length; i++) {
44 html += Drupal.theme('mkdruResult', data.hits[i],
45 i + 1 + mkdru.recPerPage *
48 $('.mkdru-result-list').html(html);
49 $('.mkdru-result-title').bind('click', mkdru.requestDetail);
50 $('.mkdru-results').show();
53 mkdru.pz2Status = function (data) {
56 mkdru.pz2Term = function (data) {
58 for (var i = 0; i < data.xtargets.length && i < mkdru.sourceMax; i++ ) {
59 html += Drupal.theme('mkdruTerm', data.xtargets[i].name, data.xtargets[i].freq,
60 'mkdru-facet-source', data.xtargets[i].id);
62 $('.mkdru-facet-sources').html(html);
65 for (var i = 0; i < data.subject.length && i < mkdru.subjectMax; i++ ) {
66 html += Drupal.theme('mkdruTerm', data.subject[i].name, data.subject[i].freq,
67 'mkdru-facet-subject', data.subject[i].id);
69 $('.mkdru-facet-subjects').html(html);
72 for (var i = 0; i < data.author.length && i < mkdru.authorMax; i++ ) {
73 html += Drupal.theme('mkdruTerm', data.author[i].name, data.author[i].freq,
74 'mkdru-facet-author', data.author[i].id);
76 $('.mkdru-facet-authors').html(html);
78 $('.mkdru-facet-source').bind('click', function (e) {
79 mkdru.limitTarget(this.getAttribute('target_id'), this.firstChild.nodeValue);
83 $('.mkdru-facet-subject').bind('click', function (e) {
84 mkdru.limitQuery('su', this.firstChild.nodeValue);
88 $('.mkdru-facet-author').bind('click', function (e) {
89 mkdru.limitQuery('au', this.firstChild.nodeValue);
94 mkdru.pz2ByTarget = function (data) {
98 mkdru.pz2Record = function (data) {
99 clearTimeout(mkdru.pz2.recordTimer);
100 // $('.mkdru-results').hide();
102 // clearTimeout(mkdru.pz2.showTimer);
103 $('.mkdru-detail').html(Drupal.theme('mkdruDetail', data));
104 $('.mkdru-detail').bind('click', function () {$('.mkdru-detail').hide()});
105 $('.mkdru-detail').show();
110 mkdru.submitQuery = function () {
111 mkdru.query = $('.mkdru-search input:text').attr('value');
113 mkdru.pollDropDowns();
115 mkdru.submitted = true;
119 mkdru.triggerSearch = function () {
121 mkdru.submitted = true;
124 mkdru.search = function () {
125 mkdru.pz2.search(mkdru.query, mkdru.recPerPage, mkdru.curSort,
129 mkdru.pollDropDowns = function () {
130 mkdru.recPerPage = $('.mkdru-perpage').attr('value');
131 mkdru.curSort = $('.mkdru-sort').attr('value');
132 if (!mkdru.submitted) return false;
134 mkdru.pz2.show(0, mkdru.recPerPage, mkdru.curSort);
138 mkdru.limitQuery = function (field, value) {
139 $('.mkdru-search input:text').attr('value', function () {
140 return this.value += ' and ' + field + '="' + value + '"';
145 mkdru.limitTarget = function (id, name) {
146 var navi = document.getElementById('mkdru-navi');
148 'Source: <a class="crossout" href="#" onclick="delimitTarget();return false;">'
150 navi.innerHTML += '<hr/>';
151 mkdru.curFilter = 'pz:id=' + id;
153 mkdru.pollDropDowns();
158 mkdru.resetPage = function () {
163 mkdru.showPage = function (pageNum) {
164 mkdru.curPage = pageNum;
165 mkdru.pz2.showPage(pageNum-1);
168 mkdru.requestDetail = function (e) {
169 mkdru.pz2.record(e.target.parentNode.id.replace('rec_', ''));
172 mkdru.nextPage = function () {
173 if (mkdru.totalRec - mkdru.recPerPage * mkdru.curPage > 0) {
174 mkdru.pz2.showNext();
179 mkdru.prevPage = function () {
180 if (mkdru.pz2.showPrev() != false) {
186 // wait until the DOM is ready, bind events
187 // and instantiate pz2 library
188 $(document).ready(function () {
189 $('.mkdru-search').bind('submit', mkdru.submitQuery);
190 $('.mkdru-search input:text').attr('value', '');
191 $('.mkdru-perpage').bind('change', function () { mkdru.pollDropDowns() });
192 $('.mkdru-sort').bind('change', function () { mkdru.pollDropDowns() });
193 mkdru.pz2 = new pz2( { "onshow": mkdru.pz2Show,
194 "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
195 "pazpar2path": mkdru.pazpar2path,
196 "oninit": mkdru.pz2Init,
197 "onstat": mkdru.pz2Status,
198 "onterm": mkdru.pz2Term,
199 "termlist": "xtargets,subject,author",
200 "onbytarget": mkdru.pz2ByTarget,
201 "usesessions" : mkdru.usesessions,
202 "showResponseType": mkdru.showResponseType,
203 "onrecord": mkdru.pz2Record,
204 "autoInit": false } );
205 mkdru.query = Drupal.settings.mkdru.query;
206 if (mkdru.usesessions) {
208 } else if (mkdru.query) {
209 mkdru.triggerSearch();