// Licence: GPLv3 & GPLv2 (dual licensed) // Original source: https://github.com/Ladsgroup/CheckUserHelper const addCopyElement = require( './addCopyElement.js' ), createTable = require( './createTable.js' ), createTableText = require( './createTableText.js' ), generateData = require( './generateData.js' ); /** * Initialises the table in the summary collapse layout * by adding the headings, and: * * Generates the rows in the tables if the box around the table if not collapsed, or * * Registers that when the user opens the collapsed box the table rows are generated. */ function init() { const $checkUserHelperFieldset = $( '.mw-checkuser-helper-fieldset' ); const $panelLayout = $( '.mw-collapsible-content', $checkUserHelperFieldset ); if ( !$panelLayout ) { return; } const tbl = document.createElement( 'table' ); tbl.className = 'wikitable mw-checkuser-helper-table'; if ( mw.config.get( 'wgCheckUserDisplayClientHints' ) ) { tbl.className += ' mw-checkuser-clienthints-enabled-temporary-class'; } const tr = tbl.insertRow(); tr.appendChild( $( '' ).text( mw.message( 'checkuser-helper-user' ) )[ 0 ] ); tr.appendChild( $( '' ).text( mw.message( 'checkuser-helper-ips' ) )[ 0 ] ); tr.appendChild( $( '' ).text( mw.message( 'checkuser-helper-uas' ) )[ 0 ] ); if ( mw.config.get( 'wgCheckUserDisplayClientHints' ) ) { tr.appendChild( $( '' ).text( mw.message( 'checkuser-helper-client-hints' ) )[ 0 ] ); } $panelLayout.html( tbl ); // eslint-disable-next-line no-jquery/no-class-state const tooManyResults = $( '.oo-ui-fieldsetLayout', $checkUserHelperFieldset ).hasClass( 'mw-collapsed' ); mw.loader.using( 'mediawiki.widgets', () => { if ( !tooManyResults ) { generateAndDisplayData(); } else { $checkUserHelperFieldset.one( 'afterExpand.mw-collapsible', () => { generateAndDisplayData(); } ); } } ); } /** * A function that links together the generateData.js, createTable.js, * and createTableText.js files to generate the data and then display * it in the summary table. Called by the init function. */ function generateAndDisplayData() { const showCounts = $( '.mw-checkuser-get-actions-results' ).length !== 0; generateData().then( ( data ) => { createTable( data, showCounts ); addCopyElement( createTableText( data, showCounts ) ); } ); } module.exports = { init: init };