X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=www%2Fiphone%2Fexample_client.js;h=13b3e4b9b88721252971585ac12fea65097f91d7;hb=65e61e8cd602ebf7afa870833914997f9fd88e0e;hp=755b68c32c2969569cc47ea601b6f65ca42fbe80;hpb=d8f4cd30b30f562c17cf77dae52d4d35e3b5a771;p=pazpar2-moved-to-github.git diff --git a/www/iphone/example_client.js b/www/iphone/example_client.js index 755b68c..13b3e4b 100644 --- a/www/iphone/example_client.js +++ b/www/iphone/example_client.js @@ -4,83 +4,299 @@ // 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'; +var usesessions = false; +var pazpar2path = '/service-proxy/'; var showResponseType = ''; +// Facet configuration var querys = {'su': '', 'au': '', 'xt': ''}; +var query_client_server = {'su': 'subject', 'au': 'author', 'xt': 'xtargets'}; +var querys_server = {}; +var useLimit = 1; +// Fail to get JSON working stabil. +var showResponseType = 'xml'; -if (document.location.hash == '#useproxy') { - usesessions = false; - pazpar2path = '/service-proxy/'; - showResponseType = 'json'; +var imageHelper = new ImageHelper(); + +if (document.location.hash == '#pazpar2' || document.location.search.match("useproxy=false")) { + usesessions = true; + pazpar2path = '/pazpar2/search.pz2'; + showResponseType = 'xml'; } my_paz = new pz2( { "onshow": my_onshow, - "showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way +// "showtime": 2000, //each timer (show, stat, term, bytarget) can be specified this way "pazpar2path": pazpar2path, "oninit": my_oninit, - "onstat": my_onstat, + "onstat": null, "onterm": my_onterm_iphone, "termlist": "xtargets,subject,author", - "onbytarget": my_onbytarget, - "usesessions" : usesessions, + "onbytarget": null, + "usesessions" : usesessions, "showResponseType": showResponseType, - "onrecord": my_onrecord } ); + "onrecord": my_onrecord, + "errorhandler" : my_onerror} +); // some state vars var curPage = 1; -var recPerPage = 20; +var recPerPage = 10; +var recToShowPageSize = 20; +var recToShow = recToShowPageSize; +var recIDs = {}; var totalRec = 0; var curDetRecId = ''; var curDetRecData = null; var curSort = 'relevance'; -var curFilter = null; +var curFilter = 'ALL'; var submitted = false; var SourceMax = 16; var SubjectMax = 10; var AuthorMax = 10; var tab = "recordview"; +var triedPass = ""; +var triedUser = ""; // // pz2.js event handlers: // +function my_onerror(error) { + switch(error.code) { + // No targets! + case "8": alert("No resources were selected for the search"); break; + // target not configured, this is a pazpar2 bug + // but for now simply research + case "9": + triggerSearch(); + break; + // authentication + case "100" : + loginFormSubmit(); + //window.location = "login.html"; + break; + default: + alert("Unhandled error: " + error.code); + throw error; // display error in JavaScript console + } +} + +function loginFormSubmit() { + triedUser = document.loginForm.username.value; + triedPass = document.loginForm.password.value; + auth.login( {"username": triedUser, + "password": triedPass}, + authCb, authCb); +} + +function handleKeyPress(e) +{ + var key; + if(window.event) + key = window.event.keyCode; + else + key = e.which; + + if(key == 13 || key == 10) + { + button = document.getElementById('button'); + button.focus(); + button.click(); + + return false; + } + else + return true; +} + +function authCb(authData) { + if (!authData.loginFailed) { + triedUser = ""; + triedPass = ""; + } + + if (authData.loggedIn == true) { + showhide("recordview"); + } +} + +function logOutClick() { + auth.logOut(authCb, authCb); +} + +function loggedOut() { + var login = document.getElementById("login"); + login.innerHTML = 'Login'; +} + +function loggingOutFailed() { + alert("Logging out failed"); +} + +function login() { + showhide("login"); +} + +function logout() { + auth.logOut(loggedOut, loggingOutFailed, true); +} + +function logInOrOut() { + var loginElement = document.getElementById("login"); + if (loginElement.innerHTML == 'Login') + login(); + else + logout(); +} +function loggedIn() { + var login = document.getElementById("login"); + login.innerHTML = 'Logout'; + document.getElementById("log").innerHTML = login.innerHTML; +} + +function auth_check() { + auth.check(loggedIn, login); + domReady(); +} + +// +// Pz2.js event handlers: +// function my_oninit() { my_paz.stat(); my_paz.bytarget(); } +function showMoreRecords() { + var i = recToShow; + recToShow += recToShowPageSize; + for ( ; i < recToShow && i < recPerPage; i++) { + var element = document.getElementById(recIDs[i]); + if (element) + element.style.display = ''; + } + if (i == recPerPage) { + var element = document.getElementById('recdiv_END'); + if (element) + element.style.display = 'none'; + } +} + +function hideRecords() { + for ( var i = 0; i < recToShow; i++) { + var element = document.getElementById(recIDs[i]); + if (element && recIDs != curDetRecId) + element.style.display = 'none'; + } + var element = document.getElementById('recdiv_END'); + if (element) + element.style.display = 'none'; +} + +function showRecords() { + for (var i = 0 ; i < recToShow && i < recPerPage; i++) { + var element = document.getElementById(recIDs[i]); + if (element) + element.style.display = ''; + } + var element = document.getElementById('recdiv_END'); + if (element) { + if (i == recPerPage) + element.style.display = 'none'; + else + element.style.display = ''; + } +} + + + + function my_onshow(data) { totalRec = data.merged; // move it out var pager = document.getElementById("pager"); pager.innerHTML = ""; - pager.innerHTML +='
Displaying: ' + drawPager(pager); + pager.innerHTML +='
Displaying: ' + (data.start + 1) + ' to ' + (data.start + data.num) + ' of ' + data.merged + ' (found: ' + data.total + ')
'; - drawPager(pager); - // navi + var results = document.getElementById("results"); - + var html = []; + if (data.hits == undefined) + return ; + var style = ''; for (var i = 0; i < data.hits.length; i++) { var hit = data.hits[i]; - html.push('
  • ' - /* +''+ (i + 1 + recPerPage * (curPage - 1)) +'. ' */ - +'' - + hit["md-title"] +' '); - if (hit["md-title-responsibility"] !== undefined) { - html.push(''+hit["md-title-responsibility"]+' '); - if (hit["md-title-remainder"] !== undefined) { - html.push('' + hit["md-title-remainder"] + ' '); - } - } + var recDivID = "recdiv_" + hit.recid; + recIDs[i] = recDivID; + var lines = 0; + if (i == recToShow) + style = ' style="display:none" '; + html.push('
  • ' ); + html.push(''); + if (1) { + var useThumbnails = hit["md-use_thumbnails"]; + var thumburls = hit["md-thumburl"]; + if (thumburls && (useThumbnails == undefined || useThumbnails == "1")) { + var thumbnailtag = imageHelper.getImageTagByRecId(hit.recid,"md-thumburl", 60, "S"); + html.push(thumbnailtag); + } else { + if (hit["md-isbn"] != undefined) { + var coverimagetag = imageHelper.getImageTagByRecId(hit.recid, "md-isbn", 60, "S"); + if (coverimagetag.length>0) { + html.push(coverimagetag); + } else { + html.push(" "); + } + } + } + } + html.push(""); + html.push(''); + html.push(hit["md-title"]); + html.push(""); + + if (hit["md-title-remainder"] != undefined) { + html.push(''); + html.push(hit["md-title-remainder"]); + html.push(""); + lines++; + } + if (hit["md-author"] != undefined) { + html.push(''); + html.push(hit["md-author"]); + html.push(""); + lines++; + } + else if (hit["md-title-responsibility"] != undefined) { + html.push(''); + html.push(hit["md-title-responsibility"]); + html.push(""); + lines++; + } + for (var idx = lines ; idx < 2 ; idx++) { + html.push(''); + html.push(" "); + html.push(""); + } +/* if (hit.recid == curDetRecId) { html.push(renderDetails_iphone(curDetRecData)); } - html.push('
  • '); +*/ + html.push(''); } + if (data.activeclients == 0) + document.getElementById("loading").style.display = 'none'; +/* + // set up "More..." if needed. + style = 'display:none'; + if (recToShow < recPerPage) { + style = 'display:block'; + } + html.push('
  • More...
  • '); +*/ replaceHtml(results, html.join('')); } @@ -96,42 +312,62 @@ function my_onstat(data) { + '/' + data.hits + ' :.'; } -function showhide(newtab) { - var showtermlist = false; - if (newtab != null) - tab = newtab; +function showhide(newtab, hash) { + var showtermlist = false; + if (newtab != null) + tab = newtab; + + if (tab == "recordview") { + document.getElementById("recordview").style.display = ''; + if (hash != undefined) + document.location.hash = hash; + } + else + document.getElementById("recordview").style.display = 'none'; - if (tab == "recordview") { - document.getElementById("recordview").style.display = ''; - } - else - document.getElementById("recordview").style.display = 'none'; + if (tab == "xtargets") { + document.getElementById("term_xtargets").style.display = ''; + showtermlist = true; + } + else + document.getElementById("term_xtargets").style.display = 'none'; - if (tab == "xtargets") { - document.getElementById("term_xtargets").style.display = ''; - showtermlist = true; - } - else - document.getElementById("term_xtargets").style.display = 'none'; + if (tab == "subjects") { + document.getElementById("term_subjects").style.display = ''; + showtermlist = true; + } + else + document.getElementById("term_subjects").style.display = 'none'; - if (tab == "subjects") { - document.getElementById("term_subjects").style.display = ''; - showtermlist = true; - } - else - document.getElementById("term_subjects").style.display = 'none'; + if (tab == "authors") { + document.getElementById("term_authors").style.display = ''; + showtermlist = true; + } + else + document.getElementById("term_authors").style.display = 'none'; - if (tab == "authors") { - document.getElementById("term_authors").style.display = ''; - showtermlist = true; - } - else - document.getElementById("term_authors").style.display = 'none'; + if (tab == "detailview") { + document.getElementById("detailview").style.display = ''; + } + else { + document.getElementById("detailview").style.display = 'none'; + var element = document.getElementById("rec_" + curDetRecId); + if (element != undefined) + element.scrollIntoView(); - if (showtermlist == false) - document.getElementById("termlist").style.display = 'none'; - else - document.getElementById("termlist").style.display = ''; + } + if (showtermlist == false) + document.getElementById("termlist").style.display = 'none'; + else + document.getElementById("termlist").style.display = ''; + + var tabDiv = document.getElementById("loginDiv"); + if (tab == "login") { + tabDiv.style.display = ''; + } + else { + tabDiv.style.display = 'none'; + } } function my_onterm(data) { @@ -139,10 +375,10 @@ function my_onterm(data) { termlists.push('
    '); termlists.push('

    Sources

    '); - termlists.push('