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);
}