User
Difference between revisions of "Seb35/bluell.js"
< User:Seb35
m (syntaxe) |
m |
||
Line 138: | Line 138: | ||
function doQuery(){ | function doQuery(){ | ||
− | var speaker = '',//oouiSpeaker. | + | var speaker = '',//oouiSpeaker.getValue(), |
− | gender = oouiGender. | + | gender = oouiGender.getValue(), |
− | language = oouiLanguage. | + | language = oouiLanguage.getValue(), |
− | proficiency = oouiProficiency. | + | proficiency = oouiProficiency.getValue(); |
var query = "SELECT ?record WHERE { ?record prop:P2 entity:Q2 ; prop:P4 ?language ; prop:P5 ?speaker . "; | var query = "SELECT ?record WHERE { ?record prop:P2 entity:Q2 ; prop:P4 ?language ; prop:P5 ?speaker . "; |
Revision as of 14:02, 2 August 2021
var oouiSpeaker, oouiGender, oouiLanguage, oouiProficiency;
$( function (){
var userLanguage = mw.config.get( 'wgUserLanguage' );
mw.loader.using( ['oojs', 'oojs-ui'], function () {
$.getJSON(
'https://lingualibre.org/bigdata/namespace/wdq/sparql',
{
query: 'SELECT DISTINCT ?speaker ?speakerLabel WHERE { ?user prop:P2 entity:Q3 . ?speaker rdfs:label ?speakerLabel . FILTER( LANG(?speakerLabel) = "en" ) } ORDER BY ?speakerLabel'
}
).done( function( speakers ) {
console.log( speakers );
oouiSpeaker = new OO.ui.ComboBoxInputWidget( {
placeholder: '👤 Speaker',
menu: {
filterFromInput: true,
items: users.results.bindings.map( function( x ) {
return new OO.ui.MenuOptionWidget( {
data: x.speaker.value.substr( 31 ),
label: x.speakerLabel.value
} );
} )
}
} );
$( '#filteruser' ).append(
oouiSpeaker.$element
);
oouiSpeaker.on( 'enter', doQuery );
} );
$.getJSON(
'https://lingualibre.org/bigdata/namespace/wdq/sparql',
{
query: 'SELECT DISTINCT ?gender ?genderLabel WHERE { ?gender prop:P2 entity:Q7 . SERVICE wikibase:label { bd:serviceParam wikibase:language "' + userLanguage + ',fr,en" } } ORDER BY ?gender'
}
).done( function( genders ) {
console.log( genders );
oouiGender = new OO.ui.ComboBoxInputWidget( {
placeholder: '♀️ ♂️ Speaker\'s gender',
menu: {
filterFromInput: true,
items: genders.results.bindings.map( function( x ) {
return new OO.ui.MenuOptionWidget( {
data: x.gender.value.substr( 31 ),
label: x.genderLabel.value
} );
} )
}
} );
$( '#filtergender' ).append(
oouiGender.$element
);
oouiGender.on( 'enter', doQuery );
} );
$.getJSON(
'https://lingualibre.org/bigdata/namespace/wdq/sparql',
{
query: 'SELECT DISTINCT ?language ?languageLabel WHERE { ?language prop:P2 entity:Q4 . SERVICE wikibase:label { bd:serviceParam wikibase:language "' + userLanguage + ',fr,en" } } ORDER BY ?languageLabel'
}
).done( function( languages ) {
console.log( languages );
oouiLanguage = new OO.ui.ComboBoxInputWidget( {
placeholder: '🏳️ Language',
menu: {
filterFromInput: true,
items: languages.results.bindings.map( function( x ) {
return new OO.ui.MenuOptionWidget( {
data: x.language.value.substr( 31 ),
label: x.languageLabel.value
} );
} )
}
} );
$( '#filterlanguage' ).append(
oouiLanguage.$element
);
oouiLanguage.on( 'enter', doQuery );
} );
$.getJSON(
'https://lingualibre.org/bigdata/namespace/wdq/sparql',
{
query: 'SELECT DISTINCT ?proficiency ?proficiencyLabel WHERE { ?proficiency prop:P2 entity:Q5 . SERVICE wikibase:label { bd:serviceParam wikibase:language "' + userLanguage + ',fr,en" } } ORDER BY ?proficiency'
}
).done( function( proficiencies ) {
console.log( proficiencies );
oouiProficiency = new OO.ui.ComboBoxInputWidget( {
placeholder: '🥇 Level of proficiency',
menu: {
filterFromInput: true,
items: proficiencies.results.bindings.map( function( x ) {
return new OO.ui.MenuOptionWidget( {
data: x.proficiency.value.substr( 31 ),
label: x.proficiencyLabel.value
} );
} )
}
} );
$( '#filterlevelofproficiency' ).append(
oouiProficiency.$element
);
oouiProficiency.on( 'enter', doQuery );
} );
// Display results
function createAudioBoxesForSearch( data ) {
if ( data.results === undefined || data.results.bindings === undefined ) {
displayError( 'error: no result from SPARQL' );
return;
}
for (var i = 0; i < 100; i++) {
var box = $( '<div class="audiobox"> <div class="ab-playbutton"><i></i></div> <div> <div class="ab-title">...</div> <div class="ab-metadata">...</div> </div> </div>' );
box = new AudioBox( data.results.bindings[ i ].substr( 31 ), box );
$( '#audioresults' ).append( box );
//ab1 = new AudioBox( data.query.rwrecords[ i ], $( '.audiobox' ).eq( i ) );
//$("body").append('<div class="audiobox"> <div class="ab-playbutton"><i></i></div> <div> <div class="ab-title">...</div> <div class="ab-metadata">...</div> </div> </div>');
}
//ab1 = new AudioBox( data.query.rwrecords[ 0 ], $( '.audiobox' ).eq( 0 ) );
//ab2 = new AudioBox( data.query.rwrecords[ 1 ], $( '.audiobox' ).eq( 1 ) );
}
// Do SPARQL request from filters
function doQuery(){
var speaker = '',//oouiSpeaker.getValue(),
gender = oouiGender.getValue(),
language = oouiLanguage.getValue(),
proficiency = oouiProficiency.getValue();
var query = "SELECT ?record WHERE { ?record prop:P2 entity:Q2 ; prop:P4 ?language ; prop:P5 ?speaker . ";
if( speaker && /^Q[0-9]+$/.test( speaker ) ) {
query += "?record prop:P5 " + speaker + " .";
}
if( gender && /^Q[0-9]+$/.test( gender ) ) {
query += "?record prop:P5 [ prop:P8 " + gender + " ] .";
}
if( language && /^Q[0-9]+$/.test( language ) ) {
query += "?record prop:P4 " + language + " .";
}
if( proficiency && /^Q[0-9]+$/.test( proficiency ) ) {
query += "?speaker llp:P4 [ llv:P4 ?language ; llq:16 " + proficiency + " ] .";
}
query += "SERVICE wikibase:label { bd:serviceParam wikibase:language '[AUTO_LANGUAGE],en,fr' } }";
$.getJSON(
'https://lingualibre.org/bigdata/namespace/wdq/sparql',
{
query: query,
//Accept: 'application/sparql-results+json'
}
).then( createAudioBoxesForSearch, displayError );
}
} );
} );