User:Vvekbv/recoin id.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)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/**
* Recoin: Relative Completeness Indicator
*
* Explanations module: Lists the most important missing attributes, which are used for computing the relative completeness indicator and adds a relative completeness indicator symbol to the page status indicators
*
* Developers : Vevake Balaraman (vevake.balaraman@gmail.com), Simon Razniewski (razniewski@inf.unibz.it), Albin Ahmeti (albin.ahmeti@gmail.com)
* Inspired by : COOL-WD: COmpleteness toOL for WikiData (Fariz Darari)
*/
( function( mw, $ ) {
'use strict';
console.log('recoin_id-plugin loaded');
/**
* Check if we're viewing an item
*/
var entityID = mw.config.get( 'wbEntityId' );
var lang = mw.config.get( 'wgUserLanguage' );
var pageid = "48139757";
var title = "Most relevant ID properties which are absent";
if ( !entityID )
{
return;
}
/**
* holds the DOM input element for the label
*/
var labelsParent_id;
function init()
{
// Element into which to add the missing attributes
labelsParent_id = $('#wb-item-' + entityID + ' div.wikibase-entitytermsview-heading');
if (labelsParent_id.length < 1)
{
return;
}
var labelsDOM_id = $('<div id="recoin_id-property" style="display:none"></div>');
var labelsUL_id = $('<ul></ul>');
var labelsText_id = $('<div class="wikibase-entitytermsview-recoinproperty-toggler ui-toggler ui-toggler-toggle ui-state-default" id = "recoin_id-title"></div>');
// var translate_help = $('<span class="wikibase-entitytermsview-entitytermsforlanguagelistview-configure" id="translate_id"><a href="https://www.wikidata.org/wiki/Wikidata:Recoin/translation"> [Help with translations]</a></span>');
$.getJSON( 'https://www.wikidata.org/w/api.php?action=query&prop=extracts&titles=Wikidata:Recoin/translation&format=json',
function ( result )
{
var desc = result.query.pages[pageid].extract;
desc = desc.replace(/<p>/g, "");
desc = desc.replace(/<\/p>/g, "");
desc = desc.split("\n");
for (var i=0; i< desc.length; i++)
{
var s = desc[i].split(";");
if (s[0]===lang && s.length>=7)
{
title = s[1];
break;
}
}
var toggleSlider_id = $('<span class = "ui-toggler-icon ui-icon ui-icon-triangle-1-e" id="status_id"></span>\
<span class="ui-toggler-label">'+ title +': ID </span>');
labelsText_id.append(toggleSlider_id);
labelsParent_id.append(labelsText_id);
// labelsParent.append(translate_help);
});
$.getJSON( 'https://tools.wmflabs.org/recoin/getmissingattributes_id.php?callback=?', 'subject=' + entityID + '&lang=' + lang,
function ( result )
{
// Avoid `TypeError: can't access property "length", result.entities is undefined ``
// Seen on https://recoin.toolforge.org/getmissingattributes_id.php?callback=jQuery34104710056820494901_1611334851637&subject=Q105000091&lang=en&_=1611334851638
// which provides invalid response.
if(!result || !result.entities) return;
for (var i=0; i< result.entities.length; i++)
{
var insertElem_id = '<li> ' +
'<label><a href="https://www.wikidata.org/wiki/Property:'+ result.entities[i].entity + '">' +
result.entities[i].entity + '</a>' +
' - ' + result.entities[i].label + ' - ' + result.entities[i].rating + ' '+
'</label></li>';
labelsUL_id.append(insertElem_id);
}
labelsDOM_id.append(labelsUL_id);
labelsParent_id.append(labelsDOM_id);
$("#recoin_id-title" ).click(function() {
$( "#recoin_id-property" ).slideToggle();
$("#status_id").toggleClass("ui-icon-triangle-1-e ui-icon-triangle-1-s ui-toggler-icon3dtrans");
});
});
}
$( function () {
mw.hook( 'wikipage.content' ).add( init );
});
} ( mediaWiki, jQuery ) );