Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Recherche dans un Tree RDF

Envoyé par : lionel

Date : 15/12/2005 08:54

Bonjour, voici une contribution plutôt qu'une question. L'objectif étant de faire une recherche dans un Tree et d'afficher le resultat dans ce même tree.

En gros:

1-On parcours l'ensemble des sujets de la ressource RDF 2-Si on trouve une valeur correspondant à ce que l'on recherche, on met dans un tableau les valeurs 3-On reconstruit le Tree.

Donc voici le code qui marche chez moi:

function search(){
var listCoursName = new Array();
var listCoursId = new Array();
var searchString = String(document.getElementById("chp-search").value);
if (searchString.length!=0){
	var tree = document.getElementById('courstree');
	var datasource = RDF.GetDataSource(tree.getAttribute('datasources'));
	//
	var resources = datasource.GetAllResources();
	var nameRS = RDF.GetResource("http://moodle/rdf/courses#name");
	var idRS = RDF.GetResource("http://moodle/rdf/courses#id");
	var recherche = "";
	searchString = searchString.toLowerCase();
	//
	while (resources.hasMoreElements()) {
		var resource = resources.getNext();
		resource.QueryInterface(Components.interfaces.nsIRDFResource);
		//on recherche que dans les sujets qui ne sont pas container
		if (!rdfContainerUtils.IsContainer(datasource, resource)){
			//on recherche la valeur de #name
			var targetName = datasource.GetTarget(resource, nameRS, true);
			if (targetName instanceof Components.interfaces.nsIRDFLiteral){
				recherche = targetName.Value.toLowerCase();
				if (recherche.indexOf(searchString)>-1){
					//on recherche la valeur de #id
					var targetId = datasource.GetTarget(resource, idRS, true);
					if (targetId instanceof Components.interfaces.nsIRDFLiteral){
						//dump(targetid.Value + "\n");
						listCoursName.push(targetName.Value);
						listCoursId.push(targetId.Value);
					}
					
				}
			}
		}
	
	}
	if (listCoursId){
		buildCustomTree(listCoursId, listCoursName);
	}
}
 
}
//construction du Tree après recherche
function buildCustomTree(listCoursId, listCoursName){
//
var treeView = {
   rowCount : listCoursId.length,
   getCellText : function(row,column){
     if (column.id == "coursname") return listCoursName[row];
     else return listCoursId[row];
   },
   setTree: function(treebox){ this.treebox = treebox; },
   isContainer: function(row){ return false; },
   isSeparator: function(row){ return false; },
   isSorted: function(){ return false; },
   getLevel: function(row){ return 0; },
   getImageSrc: function(row,col){ return null; },
   getRowProperties: function(row,props){},
   getCellProperties: function(row,col,props){},
   getColumnProperties: function(colid,col,props){}

};


document.getElementById('courstree').view=treeView;

}

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.