Mercurial > hg > fulltextSearchFrontEnd
view WebContent/found.js @ 2:ab6c05b4d8dd default tip
bugs
| author | dwinter |
|---|---|
| date | Wed, 26 Jan 2011 16:36:51 +0100 |
| parents | 47f3c44eff7d |
| children |
line wrap: on
line source
// found.js // Author: dwinter //copyright: Max Planck Institute for the History of Science // license: has to be decided // version: 0.5 var server = 'http://127.0.0.1:8180/fulltextSearchServer/'; //var server = 'http://xserve07.mpiwg-berlin.mpg.de:58080/vlpFullTextSearch/'; //var languages = new Array(); var langNew = new Array(); var documentHits=0; var from = {}; var to = {}; var all = {}; var viewNumber=5; var searchString =""; var searchMetaData =""; var createdTags = new Array(); //function formatLanguage(responseText2,textStatus2,XMLHttpRequest2){ //}; function resetSearch(){ // setze alle zwischenergebnisse der suche zurueck $('#ticket').html(); $('#results').html(); $('#language_results').html(); $('#base_url_ticket').html(); $('#error').html(); } function showResults(object,url){ var langs = $(object).find('div.ticketLang a'); //var langs = getLanguages(); var langsLen=langs.length; for ( var i=0; i<langsLen; ++i ){ // now fill it with the languages if ($('#language_results_'+$(langs[i]).text()).length==0){ $('#language_results').append('<div class="language_results_header">'+$(langs[i]).text()+'</div>'); $('#language_results').append('<div id="all_'+$(langs[i]).text()+'"></div>'); $('#language_results').append('<div id="show_next_'+$(langs[i]).text()+'"></div>'); $('#language_results').append('<div id="language_results_'+$(langs[i]).text()+'"></div>'); langNew.push(true); } } for ( var i=0; i<langsLen; ++i ){ // gehe durch alle Sprachen var lang = $(langs[i]).text(); //console.log("show_results_lang2:"+lang); if (lang != '') { if (langNew[i]) { //console.log(server + url + '/' + lang); langNew[i] = false; //$('#all_'+lang).load(server + url + '/' + lang+'/resultInfo resultInfo hits', function() { // all[lang]=$(this).find("hits").text(); // //console.log("all:"+all[lang]); // //console.log("all_lang:"+lang); // $('#show_next_'+lang).html(createNavString(lang)); //}); $('#all_'+lang.replace(":","\\:")).load(server + url + '/' + lang+'/resultInfo resultInfo', function() { var lang=$(this).find("lang").text(); all[lang]=$(this).find("hits").text(); //console.log("all:"+all[lang]); //console.log("all_this:"+this); //console.log("all_lang_new:"+lang); $('#show_next_'+lang.replace(":","\\:")).html(createNavString(lang)); }); $('#language_results_'+lang.replace(":","\\:")).load( server + url + '/' + lang+'?from='+from[lang]+'&to='+to[lang], function() { //console.log('after results'); var lang = $(this).find('div.resultLang').text(); //console.log('after results:'+lang); $(this).find('tr.documentHit').each( //$('tr.documentHit').each( function(index) { var newId = $(this).attr('id') + '_content'; //console.log("created:"); //console.log(newId); //console.log(createdTags); //console.log(jQuery.inArray(newId,createdTags)); if (jQuery.inArray(newId,createdTags)<0){ createdTags.push(newId); //if ($('#'+newId).length==0) { $(this).after( '<tr><td colspan="5" class="resultLinksToPages" id="' + newId + '"></tr>'); } var ref = $(this).find('td.resultTextId').text(); //console.log('xxx:'+url + '/' + lang + '/' + ref); var href = $(this).find('td.resultLink a.resultHits').attr('href'); if (href!=''){ href="showhits.html?url="+href; href+="&textId="+ref; var linknode = $(this).find('td.resultLink a.searchHits'); if (linknode.length>0){ linknode.attr('href',href) } else { $(this).find('td.resultLink a.resultHits').after('<a class="searchHits" href ="'+href+'"> show</a>'); } } var urlStr = server + url + '/' + lang+ '/' + ref; newId = newId.replace(/(:|\.)/g,'\\$1'); // quote dots in ids $('#' + newId).load(urlStr, showPages); }); }); } else { //console.log('second'); $('#language_results_'+lang.replace(":","\\:")+' tr.documentHit').each( function(index) { //var lang = $(this).find('div.resultLang').text(); var newId = $(this).attr('id') + '_content'; //console.log(newId); var ref = $(this).find('td.resultTextId').text(); var href = $(this).find('td.resultLink a.resultHits').attr('href'); if (href!=''){ href="showhits.html?url="+href; href+="&textId="+ref; var linknode = $(this).find('td.resultLink a.searchHits'); if (linknode.length>0){ linknode.attr('href',href) } else { $(this).find('td.resultLink a.resultHits').after('<a class="searchHits" href ="'+href+'"> show</a>'); } } var urlstring = server+url + '/' + lang + '/' + ref; //var ele= $(this).find('#' + newId); newId = newId.replace(/(:|\.)/g,'\\$1'); // quote dots in ids $('#' + newId).load(urlstring, showPages); }); } // end else langNew } // lang nicht leer } // end for durch die Sprachen } function showPages(responseText2, textStatus2, XMLHttpRequest2) { $('#error').html(''); //console.log('showpage'+this) switch (XMLHttpRequest2.status) { case 0: case 202: //$('#openSearches').html('true') $(this).html('search pages'); break; case 404: $(this).html('file not found!'); break; case 500: $(this).html('Server error'); break; default: //$(this).html('done'); //console.log("showpage0"); //console.log(this); var pages=$(this).find('div.foundPageXlink'); // suche alle seiten mit treffern var pagesLen=pages.length; for ( var i=0; i<pagesLen; ++i ){ $(this).parent().addClass('foundPages'); var ref = $(pages[i]).find('a').attr('href'); $(pages[i]).load(server+ref+'/generic', function(){ //console.log("showpage"); //console.log($(this).parent()); //console.log(this); $(this).attr('class','foundPageHref'); }); // lade die treffer in der Seite } //var openSearches = $('#openSearches').text(); break; } } function loadTicket(responseText2, textStatus2, XMLHttpRequest2) { $('#error').html(''); switch (XMLHttpRequest2.status) { case 0: $('#error').html('Search server is not answering!'); case 201: // created gesamt such dokument ist erzeugt, aber suche ueber Zeilen eventuell noch nicht abgeschlossen //$('#results').html(responseText2 + " DONE!"); var url = $('#base_url_ticket').html(); showResults(this,url); //console.log('xxx:'+$('#openSearches').html()); var foundPages=$('.foundPages').length; documentHits=$('tr.documentHit').length; //console.log(documentHits); //console.log(foundPages); if (documentHits>foundPages){ // es gibt noch offene suchen dann weiter //console.log("done, but searching"); $('#results').html(responseText2 + " not yet!"); setTimeout(function() { //console.log("done, but searching"); $('#results').load(server + url, loadTicket) }, 4000); //showResults(this,url); } // ende else falls noch offene suchen ecistieren break; case 202: // still working var url = $('#base_url_ticket').html(); //console.log("202 -start:"+url); setTimeout(function() { $('#results').load(server + url, loadTicket) }, 4000); showResults(this,url); //console.log("202 -end"); break; default: $('#results').html(XMLHttpRequest2.status + ': ' + XMLHttpRequest2.statusText + '. unknow server error.'); break; } }; function getLanguages(){ // baue language parameter fuer die suche var langs=[] if ($(document).getUrlParam("supportedLanguage") != null) { langs = $(document).getUrlParam("supportedLanguage"); } //console.log("supl:"+langs) var langsLen=langs.length; //console.log("supl:"+langs.length) var found=false; //var ret=""; var ret = new Array(); if (langs instanceof Array) { for ( var i=0; i<langsLen; ++i ){ //ret+=$(langs[i]).text()+"_"; ret.push(langs[i].replace("%3A",":")); } } else { ret.push(langs.replace("%3A",":")); } return ret; } $(document).ready(function(){ resetSearch(); //langNew = true; var languages = getLanguages(); //console.log('languages'); //console.log(languages); if ($(document).getUrlParam("searchString") != null) { searchString = $(document).getUrlParam("searchString"); } $('#searchString').html(searchString); //console.log("searchstring:"+searchString) if ($(document).getUrlParam("searchMetaData") != null) { searchMetaData = $(document).getUrlParam("searchMetaData"); } //console.log("langs:"+languages); if (!(languages instanceof Array)){ var tmp = langs; languages = new Array(); languages.push(tmp.replace("%3A",":")); } //console.log("langs2:"+languages); //hole begin end fuer die sprachen setze generisch auf 20 for( var i=0; i<languages.length; ++i ){ var lg = languages[i]; //console.log("lg:"+lg); if ($(document).getUrlParam("from_"+lg) != null) { from[lg] = $(document).getUrlParam("from_"+lg); } else { from[lg]="0"; } if ($(document).getUrlParam("to_"+lg) != null) { to[lg] = $(document).getUrlParam("to_"+lg); } else { to[lg]=viewNumber; } } //console.log("metadata:"+searchMetaData) $('#ticket') .load( server+'tickets a', { searchString : searchString, languages: languages.join("_"), searchMetaData: searchMetaData }, function() { //console.log("after ticket") //console.log(this); var ticketUrl = $(this).find( 'a').attr('href'); $('#base_url_ticket').html( ticketUrl); $('#results').load( server + ticketUrl, loadTicket); } ); }); function toggleLang(obj){ var val = $(obj).attr("value"); var langs=$('#selectedLanguages').find('div.lang'); // suche alle sprachen var langsLen=langs.length; var found=false; for ( var i=0; i<langsLen; ++i ){ if ($(langs[i]).text()==val) { $(langs[i]).remove(); found=true; } } if (!found){ $('#selectedLanguages').append('<div class="lang">'+val+'</div>'); } } function createNavString(selectedLanguage){ var retStr = new Array(); var ret="" var lang = getLanguages(); var fromNew; var toNew; retStr.push("searchString="+searchString); retStr.push("searchMetaData="+searchMetaData); for(i=0;i<lang.length;i++){ var lg = lang[i]; retStr.push("supportedLanguage="+lg); if(lg==selectedLanguage){ toNew=Math.max(0,parseInt(from[lg])); fromNew=Math.max(0,parseInt(from[lg])-viewNumber); //toNew=Math.max(0,parseInt(to[lg])-viewNumber); retStr.push("from_"+escape(lg)+"="+fromNew); retStr.push("to_"+escape(lg)+"="+toNew); } else { retStr.push("from_"+escape(lg)+"="+from[lg]); retStr.push("to_"+escape(lg)+"="+to[lg]); } } if (fromNew!=toNew) ret+='<a href=?'+retStr.join('&')+'>prev</a>'; //var allStr = $('#all_'+selectedLanguage+' hits').text(); var maxPageNum = parseInt(all[selectedLanguage]); //console.log("sel_lang:"+selectedLanguage); //console.log("sel_lang:"+all[selectedLanguage]); ret+=from[selectedLanguage]+"-"+to[selectedLanguage]+" of "+maxPageNum; retStr = new Array(); retStr.push("searchString="+searchString); retStr.push("searchMetaData="+searchMetaData); for(i=0;i<lang.length;i++){ var lg = lang[i]; retStr.push("supportedLanguage="+lg); if(lg==selectedLanguage){ fromNew=Math.min(maxPageNum,parseInt(to[lg])); toNew=Math.min(maxPageNum,parseInt(to[lg])+viewNumber); retStr.push("from_"+escape(lg)+"="+fromNew); retStr.push("to_"+escape(lg)+"="+toNew); } else { retStr.push("from_"+escape(lg)+"="+from[lg]); retStr.push("to_"+escape(lg)+"="+to[lg]); } } if (fromNew!=toNew) ret+='<a href=?'+retStr.join('&')+'>next</a>'; return ret; }
