MediaWiki:Common.js: Difference between revisions
From Future Of Mankind
No edit summary |
No edit summary |
||
Line 43: | Line 43: | ||
console.log('btnHideGerman does not exist'); | console.log('btnHideGerman does not exist'); | ||
} | } | ||
( function ( mw, $ ) { | |||
'use strict'; | |||
/** | |||
* Decodes html-encoded string | |||
* | |||
* @param {string} input | |||
* @return {string} | |||
*/ | |||
function htmlDecode( input ) { | |||
var e = document.createElement( 'textarea' ); | |||
e.innerHTML = input; | |||
return e.childNodes.length === 0 ? '' : e.childNodes[ 0 ].nodeValue; | |||
} | |||
/** | |||
* @param {Object} $context | |||
* @param {boolean} $multiple | |||
*/ | |||
var toolTipTrigger = function ( $context, $multiple = false ) { | |||
if ( $multiple ) { | |||
$context = $context.find( '.regular-tooltips' ); | |||
} | |||
$context.each( function () { | |||
var text = $( this ).attr( 'data-regular-tooltips' ); | |||
text = htmlDecode( text ); | |||
var popup = new OO.ui.PopupButtonWidget( { | |||
icon: 'info', | |||
framed: false, | |||
popup: { | |||
padded: true, | |||
align: 'force-right', | |||
$content: $( '<p>' + text + '</p>' ) | |||
} | |||
} ); | |||
$( this ).append( popup.$element ); | |||
} ); | |||
}; | |||
$( function () { | |||
mw.hook( 'pf.addTemplateInstance' ).add( function ( $elements ) { | |||
toolTipTrigger( $elements, true ); | |||
} ); | |||
$( '.regular-tooltips' ).each( function () { | |||
if( $( this ).closest( '.multipleTemplateList' ).length === 0 ) { | |||
toolTipTrigger( $( this ), false ); | |||
} | |||
} ); | |||
} ); | |||
}( mediaWiki, jQuery ) ); |
Revision as of 08:04, 7 March 2023
/* Any JavaScript here will be loaded for all users on every page load. */ //collapsible table column test, based on: https://codepen.io/feger/pen/eDybC $("#btnHideEnglish").click(function(){ console.log ('Hiding first column of table with an id of report'); $( "table#collapsible_report > tbody:last-child > tr > th:first-child" ).toggle(); $( "table#collapsible_report > tbody:last-child > tr > td:first-child" ).toggle(); if ($(this).text() == "Hide English"){ $(this).text("Show English"); } else { $(this).text("Hide English"); } }); $("#btnHideHigh-German").click(function(){ console.log ('Hiding second column of table with an id of report'); $( "table#collapsible_report > tbody:last-child > tr > th:last-child" ).toggle(); $( "table#collapsible_report > tbody:last-child > tr > td:last-child" ).toggle(); if ($(this).text() == "Hide High German"){ $(this).text("Show High German"); } else { $(this).text("Hide High German"); } }); $("#btnHideGerman").click(function(){ console.log ('Hiding second column of table with an id of report'); $( "table#collapsible_report > tbody:last-child > tr > th:last-child" ).toggle(); $( "table#collapsible_report > tbody:last-child > tr > td:last-child" ).toggle(); if ($(this).text() == "Hide German"){ $(this).text("Show German"); } else { $(this).text("Hide German"); } }); // hide the german by default, on page load, but only if the btnHideGerman element exists on the page if (document.getElementById("btnHideGerman")) { console.log('btnHideGerman exists'); //$("#btnHideGerman").click(); } else { // do stuff console.log('btnHideGerman does not exist'); } ( function ( mw, $ ) { 'use strict'; /** * Decodes html-encoded string * * @param {string} input * @return {string} */ function htmlDecode( input ) { var e = document.createElement( 'textarea' ); e.innerHTML = input; return e.childNodes.length === 0 ? '' : e.childNodes[ 0 ].nodeValue; } /** * @param {Object} $context * @param {boolean} $multiple */ var toolTipTrigger = function ( $context, $multiple = false ) { if ( $multiple ) { $context = $context.find( '.regular-tooltips' ); } $context.each( function () { var text = $( this ).attr( 'data-regular-tooltips' ); text = htmlDecode( text ); var popup = new OO.ui.PopupButtonWidget( { icon: 'info', framed: false, popup: { padded: true, align: 'force-right', $content: $( '<p>' + text + '</p>' ) } } ); $( this ).append( popup.$element ); } ); }; $( function () { mw.hook( 'pf.addTemplateInstance' ).add( function ( $elements ) { toolTipTrigger( $elements, true ); } ); $( '.regular-tooltips' ).each( function () { if( $( this ).closest( '.multipleTemplateList' ).length === 0 ) { toolTipTrigger( $( this ), false ); } } ); } ); }( mediaWiki, jQuery ) );