Project

General

Profile

« Previous | Next » 

Revision 5058

search across items as well as assessments
http://bugzilla.ecoinformatics.org/show_bug.cgi?id=4387
note: you can switch this feature off using the checkbox provided in the search form. the search can be slow otherwise

View differences:

search.js
397 397
	keys are search values
398 398
*   values are pathexprs
399 399
**/
400
function generateSearchString(searchTerms, operator, searchAssessments, searchAssessmentItems) {
400
function generateSearchString(
401
		searchTerms,
402
		assessmentItemIds,
403
		operator, 
404
		searchAssessments, 
405
		searchAssessmentItems) {
401 406
	var queryString = 
402 407
		"<pathquery version=\"1.2\">"
403 408
			+"<querytitle>Web-Search</querytitle>";
......
442 447
			+"<returnfield>response_label/material/mattext</returnfield>";
443 448
	}		
444 449
    
445
    queryString +=
446
    	"<querygroup operator=\"" + operator + "\">";
447
                         
450
	// a query group for search terms
451
	var termQueryString = "";
452
    termQueryString +=
453
    	"<querygroup operator=\"" + operator + "\">";                    
448 454
    for (var i in searchTerms) {
449 455
    	var key = i;
450 456
    	var value = searchTerms[i];
451 457
    	//only if we have a value  
452 458
    	if (value.length > 0) {                   
453
			queryString +=
459
    		termQueryString +=
454 460
				"<queryterm searchmode=\"contains\" casesensitive=\"false\">";
455 461
				if (key != "anyValue") {
456
					queryString += "<pathexpr>" + key + "</pathexpr>";
462
					termQueryString += "<pathexpr>" + key + "</pathexpr>";
457 463
				}	
458
		      	queryString += "<value>" + value + "</value>";
459
		    queryString +="</queryterm>";
464
				termQueryString += "<value>" + value + "</value>";
465
				termQueryString +="</queryterm>";
460 466
		}
461 467
    }
462
    
468
    termQueryString += "</querygroup>";
469
	
470
	// querygroup for assessmentItemIds
471
	var itemQueryString = "";
472
	if (assessmentItemIds) {
473
		//the pathexpr
474
		var pathexpr = "assessmentItems/assessmentItem/assessmentItemId";
475
		// a query group for search terms
476
		itemQueryString +=
477
	    	"<querygroup operator=\"" + "UNION" + "\">";
478
	    for (var i in assessmentItemIds) {
479
	    	var itemId = assessmentItemIds[i];
480
	    	//only if we have a value  
481
	    	if (itemId.length > 0) {                   
482
	    		itemQueryString +=
483
					"<queryterm searchmode=\"contains\" casesensitive=\"false\">";
484
					if (key != "anyValue") {
485
						itemQueryString += "<pathexpr>" + pathexpr + "</pathexpr>";
486
					}	
487
					itemQueryString += "<value>" + itemId + "</value>";
488
					itemQueryString +="</queryterm>";
489
			}
490
	    }
491
	    itemQueryString += "</querygroup>";
492
	}
493
	
494
	//combine the various conditions
463 495
	queryString +=
464
		"</querygroup>"
465
	+"</pathquery>";
496
    	"<querygroup operator=\"" + "UNION" + "\">";
497
	queryString += termQueryString;
498
	queryString += itemQueryString;
499
	queryString += "</querygroup>";
466 500
	
501
	//end the pathquery
502
	queryString += "</pathquery>";
503
	
467 504
	return queryString;
468 505
				
469 506
}
......
476 513
		     
477 514
		     +"<returndoctype>edml://ecoinformatics.org/edml</returndoctype>"
478 515
		                           
479
                      +"<returnfield>assessment/title</returnfield>"
480
                      +"<returnfield>assessment/@id</returnfield>"
481
                      +"<returnfield>assessment/duration</returnfield>"
482
                      +"<returnfield>dataset/dataTable/entityName</returnfield>"
483
                      +"<returnfield>lom/general/title/string</returnfield>"
484
                      +"<returnfield>lom/general/keyword/string</returnfield>"
485
                      +"<returnfield>individualName/surName</returnfield>"
486
                      +"<returnfield>organizationName</returnfield>"
516
		     +"<returnfield>assessment/duration</returnfield>"
517
             +"<returnfield>assessment/title</returnfield>"
518
             +"<returnfield>assessment/@id</returnfield>"
519
             +"<returnfield>dataset/dataTable/entityName</returnfield>"
520
             +"<returnfield>lom/general/title/string</returnfield>"
521
             +"<returnfield>lom/general/keyword/string</returnfield>"
522
             +"<returnfield>individualName/surName</returnfield>"
523
             +"<returnfield>organizationName</returnfield>"
487 524
                      
488
                      +"<returnfield>assessmentItems/assessmentItem/assessmentItemId</returnfield>";
525
             +"<returnfield>assessmentItems/assessmentItem/assessmentItemId</returnfield>";
489 526
                      
490 527
		    if (assessmentItemId.length > 0) {
491 528
			    query += "<querygroup operator='UNION'>";
......
550 587
	return query;	
551 588
}
552 589

  
553
function callAjax(metacatURL, myQuery, qfmt, divId) {
590
function callAjax(metacatURL, myQuery, qfmt, divId, callback) {
554 591
														
555 592
	//alert("calling ajax: " + metacatURL);
556 593
	//alert("myQuery: " + myQuery);
......
562 599
		{	method: 'post',
563 600
			parameters: { action: 'squery', qformat: qfmt, query: myQuery},
564 601
			evalScripts: true, 
565
			//onSuccess: function(transport) {alert('success: ' + transport.status);},
602
			onComplete: callback,
566 603
			onFailure: function(transport) {alert('failure making ajax call');}
567 604
		 });
568 605
		 

Also available in: Unified diff