સભ્ય:Nizil Shah/LienLex.js

વિકિકોશમાંથી

નોંધ: પાનું પ્રકાશિત કર્યા પછી, તમારે તમારા બ્રાઉઝરની કૅશ બાયપાસ કરવાની આવશ્યકતા પડી શકે છે.

  • ફાયરફોક્સ / સફારી: શીફ્ટ દબાવેલી રાખીને રિલોડ પર ક્લિક કરો, અથવા તો Ctrl-F5 કે Ctrl-R દબાવો (મેક પર ⌘-R)
  • ગુગલ ક્રોમ: Ctrl-Shift-R દબાવો (મેક પર ⌘-Shift-R)
  • ઈન્ટરનેટ એક્સપ્લોરર/એજ: Ctrl દબાવેલી રાખીને રિફ્રેશ પર ક્લિક કરો, અથવા Ctrl-F5 દબાવો
  • Opera: Ctrl-F5 દબાવો
mw.loader.using(['jquery.ui'], function () {
  // Gadget activé uniquement sur les pages de l’espace principal (0).
  if (mw.config.get("wgNamespaceNumber") === 0) {
    let item = mw.config.get('wgRelevantPageName');
    let variable = "l";
    let limit = 10;

    // Envoi d’une requête get asynchrone vers le serveur de requêtage de Wikidata
    $.get(
        // Requête HTTP
        "https://query.wikidata.org/sparql",
        // Données de la requête HTTP
        {
          // Requête SPARQL
          "query": `
SELECT ?${variable} WHERE {
  ?${variable} a ontolex:LexicalEntry;
  wikibase:lemma ?lemma . FILTER regex (?lemma, "^${item}$")
} ORDER BY ?${variable} LIMIT ${limit}`,
          // Format des données du résultat
          "format": "json",
        },
        // Fonction appelée à la réception de la réponse du serveur
        function (result) {
          // On teste si la requête SPARQL a retourné un résultat
          if (result.results.bindings.length) {
            let list, timeless = false;

            // Timeless
            let timelessSection = $("#p-pagemisc");
            if (timelessSection.length) {
              let section = $(`
<div role="navigation" class="mw-portlet" id="p-lexemes" aria-labelledby="p-lexemes-label">
  <h3 id="p-lexemes-label" lang="fr" dir="ltr">Lexèmes</h3>
  <div class="mw-portlet-body">
    <ul lang="fr" dir="ltr">
    </ul>
  </div>
</div>`);
              timelessSection.after(section);
              list = $("#p-lexemes ul");
              timeless = true;
            } // Autres
            else if ($("#p-tb").length) {
              list = $('#p-tb ul');
            }

            // On parcours les lexèmes
            for (let item of result.results.bindings) {
              let href = item[variable].value;
              let lexeme = href.substring(href.lastIndexOf("/") + 1);
              let id = `t-lexeme-${lexeme}`;
              let text;

              if (timeless) {
                text = `<span>${lexeme}</span>`;
              }
              else {
                text = `Lexème (${lexeme})`;
              }
              if (list) {
                // Ajout de l’item dans la liste du menu
                list.append(`<li><a id="${id}" href="${href}">${text}</a></li>`);
              }
            }
          }
        },
        // Type des données retournées par le serveur
        "json"
    );
  }
});