User:Karima Rafes/DisplayScientist.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
$(document).ready(function() {
	//precondition
		//precondition
	if( /^(mediawiki|wikidata|meta|commons)wiki$/.test( mw.config.get( 'wgDBname' ) ))
		return; //end
		
	var wgWikibaseItemId = mw.config.get("wgWikibaseItemId");
	if (!wgWikibaseItemId) {
		console.log("no wikidata");
		return;
	}
	
	var nameWiki = mw.config.get( 'wgDBname' );
	var contentTab = 
	'<script>'+
	'function openTabScientist() {' +
    '$(\'#bodyContentScientist\').is(\':visible\')?$(\'#bodyContentScientist\').hide():$(\'#bodyContentScientist\').show();' +
    '}'+
	'</script>'+
	'<li id="ca-scientist"><span><a id="linktab-scientist" style="color:lightblue;" href="javascript:openTabScientist()" title="Research">Scientist</a></span></li>';
		
	var tab = $('#p-namespaces ul').append(contentTab);
    var content = '<div id="bodyContentScientist" class="mw-body-content" style="z-index: 5;display: none;background: rgb(222, 245, 220);"></div>';
    $(content).insertBefore('#bodyContent');
    
         //Display scientists
    var queryScientist = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \
prefix vcard: <http://www.w3.org/2006/vcard/ns#>   \
prefix udps: <http://udps.universite-paris-saclay.fr/ontology/>   \
PREFIX wd: <http://www.wikidata.org/entity/> \
 \
select distinct  ?name ?email ?website ?source \
where {   \
  graph <https://www.lri.fr>   \
        {   \
          ?source a vcard:Individual ;  \
          udps:researchTopic   wd:"+wgWikibaseItemId+" ;  \
          vcard:hasEmail ?email ; \
               vcard:fn ?name .  \
          OPTIONAL {  \
            ?source   rdfs:seeAlso ?website .  \
          }  \
	}  \
}";

    $.ajax({
                url: 'https://sparql.lri.fr/sparql',
                dataType: 'json', 
                data: { 
                    queryLn: 'SPARQL',
                    query: queryScientist, 
                    limit: 'none',
                    infer: 'true',
                    Accept: 'application/sparql-results+json'
                },
                success: displayScientist, 
                error: displayError
        });
        
 });

    function displayError(xhr, textStatus, errorThrown) {
        console.log(textStatus);
        console.log(errorThrown);
    }
    
    function displayScientist(data) {
       var textHtml = '<h2><span class="mw-headline">Scientists in relation</span></h2>';
       textHtml += '<p>';
       if(data.results.bindings.length === 0){
    		textHtml += 'Sorry, no scientists found';
    	}else{
    		textHtml += '<ul class="reference">';
	        $.each(data.results.bindings, function(index, bs) {
	        	//?name ?email ?website ?souce 
	             textHtml += '<li><span class="reference-text"><a href="' + bs["source"].value + '">' + bs["name"].value +  '</a> : '+
	            	' (<a href="' + bs["email"].value  + '">email</a>)' + '</span></li>'  ;
	        });
        	textHtml += '</ul>';
        	$('#linktab-scientist').removeAttr("style");
    	}
        textHtml += '</p>';
         $('#bodyContentScientist').append(textHtml);
    }