Difference between revisions of "MediaWiki:Common.js"

From A.P.E.S. wiki
Jump to navigation Jump to search
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
+
/**
$(function(){
+
* Name:        DataTables.js
importArticles({
+
* Author:      KockaAdmiralac <wikia@kocka.tech>
type: "script",
+
* Description: Loads CSS and JavaScript from https://datatables.net and
articles: ["u:pad.wikia.com:MediaWiki:FilterTable.js"]
+
*              initializes all tables with the `datatable` class as data tables
});
+
*/
});
+
(function($, mw) {
 +
    'use strict';
 +
    var initialized = false, queue = [];
 +
    function process($content) {
 +
        $content.find('.datatable:not(.datatable-loaded)').each(function() {
 +
            var $table = $(this).addClass('datatable-loaded'),
 +
                $tableHeader = $('<thead>');
 +
            $table.prepend($tableHeader);
 +
            $table.find('> tbody > tr').first().appendTo($tableHeader);
 +
            $table.DataTable();
 +
        });
 +
    }
 +
    function initialize($content) {
 +
        if (initialized) {
 +
            process($content);
 +
        } else {
 +
            queue.push($content);
 +
        }
 +
    }
 +
    mw.loader.load('https://cdn.datatables.net/v/dt/dt-1.12.0/b-2.2.3/b-colvis-2.2.3/date-1.1.2/fc-4.1.0/r-2.3.0/rg-1.2.0/sc-2.0.6/sp-2.0.1/sl-1.4.0/datatables.css', 'text/css');
 +
    mw.loader.getScript('https://cdn.datatables.net/v/dt/dt-1.12.0/b-2.2.3/b-colvis-2.2.3/date-1.1.2/fc-4.1.0/r-2.3.0/rg-1.2.0/sc-2.0.6/sp-2.0.1/sl-1.4.0/datatables.js').then(function() {
 +
        initialized = true;
 +
        queue.forEach(process);
 +
    });
 +
    mw.hook('wikipage.content').add(initialize);
 +
    mw.hook('datatables.loaded').fire();
 +
})(jQuery, mediaWiki);

Revision as of 04:54, 29 September 2022

/**
 * Name:        DataTables.js
 * Author:      KockaAdmiralac <wikia@kocka.tech>
 * Description: Loads CSS and JavaScript from https://datatables.net and
 *              initializes all tables with the `datatable` class as data tables
 */
(function($, mw) {
    'use strict';
    var initialized = false, queue = [];
    function process($content) {
        $content.find('.datatable:not(.datatable-loaded)').each(function() {
            var $table = $(this).addClass('datatable-loaded'),
                $tableHeader = $('<thead>');
            $table.prepend($tableHeader);
            $table.find('> tbody > tr').first().appendTo($tableHeader);
            $table.DataTable();
        });
    }
    function initialize($content) {
        if (initialized) {
            process($content);
        } else {
            queue.push($content);
        }
    }
    mw.loader.load('https://cdn.datatables.net/v/dt/dt-1.12.0/b-2.2.3/b-colvis-2.2.3/date-1.1.2/fc-4.1.0/r-2.3.0/rg-1.2.0/sc-2.0.6/sp-2.0.1/sl-1.4.0/datatables.css', 'text/css');
    mw.loader.getScript('https://cdn.datatables.net/v/dt/dt-1.12.0/b-2.2.3/b-colvis-2.2.3/date-1.1.2/fc-4.1.0/r-2.3.0/rg-1.2.0/sc-2.0.6/sp-2.0.1/sl-1.4.0/datatables.js').then(function() {
        initialized = true;
        queue.forEach(process);
    });
    mw.hook('wikipage.content').add(initialize);
    mw.hook('datatables.loaded').fire();
})(jQuery, mediaWiki);