Project

General

Profile

« Previous | Next » 

Revision 4290

refactor search methods into common search.js file.
start on making ajax-based search from the index page.
state of things: now merging across assessments and including question-level metadata

View differences:

search.js
32 32
	questionIds[0] = questionId;
33 33
	
34 34
	var documentObjects = new Array();
35
	
35
	var index = 0;
36 36
	if (submitFormObj.docids.length > 1) {
37 37
		for (var i=0; i < submitFormObj.docids.length; i++) {
38
			var documentObject = new Object();
39
			documentObject.docid = submitFormObj.docids[i].value;
40
			documentObject.questionIds = questionIds;
41
			documentObjects[i] = documentObject;
38
			if (submitFormObj.docids[i].checked) {
39
				var documentObject = new Object();
40
				documentObject.docid = submitFormObj.docids[i].value;
41
				
42
				for (var z = 0; z < submitFormObj[documentObject.docid].length; z++) {
43
					questionIds[z] = submitFormObj[documentObject.docid][z].value;
44
				}
45
			
46
				documentObject.questionIds = questionIds;
47
				documentObjects[index] = documentObject;
48
				index++;
49
			}
42 50
		}
43 51
	}
44 52
	else {
45
		var documentObject = new Object();
46
		documentObject.docid = submitFormObj.docids.value;
47
		for (var z = 0; z < submitFormObj[documentObject.docid].length; z++) {
48
			questionIds[z] = submitFormObj[documentObject.docid][z].value;
53
		if (submitFormObj.docids.checked) {
54
			var documentObject = new Object();
55
			documentObject.docid = submitFormObj.docids.value;
56
			
57
			for (var z = 0; z < submitFormObj[documentObject.docid].length; z++) {
58
				questionIds[z] = submitFormObj[documentObject.docid][z].value;
59
			}
60
			
61
			documentObject.questionIds = questionIds;
62
			documentObjects[0] = documentObject;
49 63
		}
50
		documentObject.questionIds = questionIds;
51
		documentObjects[0] = documentObject;
52 64
	}
53 65
		
54 66
	var query = generateQuery(documentObjects, metadataObjs);
......
258 270
	alert(tempQuery);
259 271
             
260 272
    return tempQuery;
273
}
274

  
275
function generateSearchString(searchString, searchAssessments, searchAssessmentItems) {
276
	var queryString = 
277
		"<pathquery version=\"1.2\">"
278
			+"<querytitle>Web-Search</querytitle>";
279
		
280
	/** assessments **/
281
	if (searchAssessments) {
282
	
283
		queryString +=
284
			"<returndoctype>edml://ecoinformatics.org/edml</returndoctype>"
285
			
286
			//assessment fields
287
               +"<returnfield>assessment/duration</returnfield>"
288
               +"<returnfield>assessment/@title</returnfield>"
289
               +"<returnfield>assessment/@id</returnfield>"
290
               +"<returnfield>lom/general/title/string</returnfield>"
291
               +"<returnfield>lom/general/keyword/string</returnfield>"
292
               +"<returnfield>individualName/surName</returnfield>"
293
               +"<returnfield>organizationName</returnfield>"
294
               
295
               +"<returnfield>assessmentItems/assessmentItem/assessmentItemId</returnfield>";
296
               
297
	}
298
						
299
	/** questions **/
300
	if (searchAssessmentItems) {
301
		queryString +=
302
			"<returndoctype>http://www.imsglobal.org/xsd/ims_qtiasiv1p2</returndoctype>"
303
			
304
			//question (qti) fields
305
			+"<returnfield>item/@title</returnfield>"
306
			+"<returnfield>item/@ident</returnfield>"
307
               +"<returnfield>qtimetadata/qtimetadatafield/fieldlabel</returnfield>"
308
               +"<returnfield>qtimetadata/qtimetadatafield/fieldentry</returnfield>"
309
			//classification
310
			+"<returnfield>fieldlabel</returnfield>"
311
			+"<returnfield>fieldentry</returnfield>"
312
			+"<returnfield>objectives/material/mattext</returnfield>"
313
			//question content
314
			+"<returnfield>presentation/flow/material/mattext</returnfield>"
315
			+"<returnfield>response_label/@ident</returnfield>"
316
			+"<returnfield>response_label/material/mattext</returnfield>";
317
	}		
318
                                                   
319
	queryString +=
320
                 "<querygroup operator=\"UNION\">"
321
                         +"<queryterm searchmode=\"contains\" casesensitive=\"false\">"
322
                                 +"<value>" + searchString + "</value>"
323
                         +"</queryterm>"
324
                 +"</querygroup>"
325
	+"</pathquery>";
326
	
327
	return queryString;
328
				
329
}
330

  
331

  
332
function generateAssessmentSearchString(assessmentItemId) {
333
	var query = 
334
		"<pathquery version='1.2'>"
335
		     +"<querytitle>Containing-Assessment-Search</querytitle>"
336
		     
337
		     +"<returndoctype>edml://ecoinformatics.org/edml</returndoctype>"
338
		                           
339
                      +"<returnfield>assessment/@title</returnfield>"
340
                      +"<returnfield>assessment/@id</returnfield>"
341
                      +"<returnfield>assessment/duration</returnfield>"
342
                      +"<returnfield>lom/general/title/string</returnfield>"
343
                      +"<returnfield>lom/general/keyword/string</returnfield>"
344
                      +"<returnfield>individualName/surName</returnfield>"
345
                      +"<returnfield>organizationName</returnfield>"
346
                      
347
                      +"<returnfield>assessmentItems/assessmentItem/assessmentItemId</returnfield>";
348
                      
349
		    if (assessmentItemId.length > 0) {
350
			    query += "<querygroup operator='UNION'>";
351
			    
352
			    //add the assessmentId if included
353
			    query +=
354
			     		"<queryterm searchmode='contains' casesensitive='false'>"
355
			                  +"<value>"
356
			                  + assessmentItemId
357
			                  +"</value>"
358
			                  +"<pathexpr>assessmentItemId</pathexpr>"
359
			          +"</queryterm>";
360
				
361
			    //close the query group      
362
			     query +=
363
			     "</querygroup>";
364
			}
365
			     
366
		query += "</pathquery>";
367
		
368
	return query;	
369
}
370

  
371
function callAjax(metacatURL, myQuery, qfmt) {
372
														
373
	//alert("calling ajax: " + metacatURL);
374
	//alert("myQuery: " + myQuery);
375
	
376
	//var myRequest = new Ajax.Request(
377
	var myUpdate = new Ajax.Updater(
378
		'ajaxResults',
379
		metacatURL,
380
		{	method: 'post',
381
			parameters: { action: 'squery', qformat: qfmt, query: myQuery},
382
			evalScripts: true, 
383
			//onSuccess: function(transport) {alert('success: ' + transport.status);},
384
			onFailure: function(transport) {alert('failure making ajax call');}
385
		 });
386
		 
387
	 //alert("done calling ajax");
261 388
}

Also available in: Unified diff