view WebContent/found.js_orig @ 0:d075d7f70506

CLOSED - # 16: Zeige nur eine konfigurierbare Anzahl von Treffern an. https://it-dev.mpiwg-berlin.mpg.de/tracs/pythonOcropusTools/ticket/16
author dwinter
date Wed, 03 Nov 2010 12:25:18 +0100
parents
children
line wrap: on
line source

//var server = 'http://127.0.0.1:8180/fulltextSearchServer/';
var server = 'http://xserve07.mpiwg-berlin.mpg.de:58080/echoFullTextSearch/';

//var languages = new Array();
var langNew = new Array();
var documentHits=0;
//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){
    //$('#openSearches').html('not decided'); // setze offene suchen auf falsch
    //var lang = $(object).find('lang').text();
    
    
    ////console.log("langnew:"+langNew);
    
    ////console.log("this:"+object);
    
    var langs = $(object).find('div.ticketLang a');	
    var langsLen=langs.length;
    //langNew = new Array();
    ////console.log(langs);
    
    //$('#language_results').html(''); // empty the diff
    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="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_lang:"+lang);	
	if (lang != '') {
	    if (langNew[i]) {
		////console.log(server + url + '/' + lang);
		langNew[i] = false;
		$('#language_results_'+lang).load(
		    server + url + '/' + lang,
		    function() {
			////console.log('after results');
			var lang = $(this).find('div.resultLang').text();
			////console.log('after results:'+lang);
			$('tr.documentHit').each(
			    function(index) {
				
				var newId = $(this).attr('id')
				    + '_content';
				////console.log(newId);
				$(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>');
					
				    }
				}
				
				$('#' + newId).load(
				    server + url + '/' + lang
					+ '/' + ref,
				    showPages);
			    });
		    });
	    } else {
		//console.log('second');
		
		$('#language_results_'+lang+' 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>');
				
			    }
			}
			
			//console.log('yyy:'+url + '/' + lang + '/' + ref);
			$('#' + newId).load(
			    server + url + '/' + lang + '/' + ref,
			    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');
	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');
	    ////console.log('ref:'+ref);
	    $(pages[i]).load(server+ref+'/digilib') // lade die treffer in der Seite
	    $(pages[i]).attr('class','foundPageHref');
	}
	
	//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() {
		$('#results').load(server + url, loadTicket)
	    }, 4000);
	    //showResults(this,url);
	} else {
	    
	    //console.log("done, really!");
	    //console.log($('#openSearches').html());
	    //var url = $('#base_url_ticket').html();
	    
	    //setTimeout(function() {
	    //	$('#results').load(server + url, loadTicket)
	    //}, 4000);
	    
	    
	    /*				var langs = $(this).find('xml lang');	
					
					
	    //console.log(this);
	    //console.log(langs);
	    var langsLen=langs.length;
	    //langNew = new Array();
	    //console.log(langsLen);
	    //$('#language_results').html(''); // empty the diff
	    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 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();
	    
	    if (lang != '') {
	    
	    //console.log(server + url + '/' + lang);
	    //console.log(langNew);
	    if (langNew[i]) {
	    langNew[i] = false;
	    $('#language_results_'+lang).load(
	    server + url + '/' + lang,
	    function() {
	    ////console.log('after results');
	    $('tr.documentHit').each(
	    function(index) {
	    var newId = $(this).attr('id')
	    + '_content';
	    ////console.log(newId);
	    $(this).after(
	    '<td colspan="5" class="resultLinksToPages" id="'
	    + newId
	    + '"></tr>');
	    var ref = $(this).find('td a')
	    .attr('href');
	    $('#' + newId).load(
	    server + url + '/' + lang
	    + '/' + ref,
	    showPages);
	    });
	    });
	    }
	    }
	    } // ende schleife durch sprachen */
	} // 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]);
	}
    } else  {
        ret.push(langs);
    }
    return ret;
    
}
 
    $(document).ready(function(){
	
	resetSearch();
	var searchString ="";
	var searchMetaData ="";
	//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("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>');
    }
    
}