MediaWiki:Gadget-HexConverter.js: Difference between revisions

From OpenGK
No edit summary
No edit summary
Line 32: Line 32:
             console.log(field.dataset);
             console.log(field.dataset);


             let hexValue = field.dataset.hexConverterHex;
             let hexValue = getInitialHexValue(field.dataset.hexConverterHex);
 
            if (!hexValue) {
                console.log('Invalid hex value supplied: ' + field.dataset.hexConverterHex);
                return;
            }


             $(field).replaceWith(function(){
             $(field).replaceWith(function(){
Line 40: Line 45:
             });
             });
         }
         }
    }
    var getInitialHexValue = function (input) {
        if (input.startsWith('0x')){
            input = input.substring(2);
        }
        input.replace(' ', '');


        if (!Boolean(input.match(/[0-9a-f]+$/i))) {
            return false;
        }
        return parseInt(Number('0x' + input), 10);
     }
     }
mw.hook( 'wikipage.content' ).add( setup );
mw.hook( 'wikipage.content' ).add( setup );
})();
})();

Revision as of 02:36, 28 December 2024

/*  _____________________________________________________________________________
 * |                                                                             |
 * |                    === WARNING: GLOBAL GADGET FILE ===                      |
 * |                  Changes to this page affect many users.                    |
 * | Please discuss changes on the talk page or on [[WT:Gadget]] before editing. |
 * |_____________________________________________________________________________|
 * 
 * Imported from version XXXX as of DATE from [[SCRIPT_SOURCE]]
 * SHORT_DESCRIPTION, see [[SCRIPT_HOME_PAGE]]
 */
(function(){
    console.log('js hex conv loaded');
    var setup = function ( $content ) {
        console.log('setup called');
        var fields = Array.from( $content.find( '.hex-converter-field' ) );
        console.log(fields);
        new ConverterWidgets(fields, $content[0]);
    }

    var ConverterWidgets = function( elements, parent ) {
        this.parent = parent;
        this.elementsList = {};
        var that = this;

        if (elements.length > 1000) {
            console.log( "Too many converter widgets on page" );
            return;
        }

        for (var i in elements) {
            var field = elements[i];
            console.log(field.dataset);

            let hexValue = getInitialHexValue(field.dataset.hexConverterHex);

            if (!hexValue) {
                console.log('Invalid hex value supplied: ' + field.dataset.hexConverterHex);
                return;
            }

            $(field).replaceWith(function(){
                var dynamicField = $('<pre>' + hexValue + '</pre>');

                return dynamicField;
            });
        }
    }

    var getInitialHexValue = function (input) {
        if (input.startsWith('0x')){
            input = input.substring(2);
        }
        input.replace(' ', '');

        if (!Boolean(input.match(/[0-9a-f]+$/i))) {
            return false;
        }

        return parseInt(Number('0x' + input), 10);
    }

mw.hook( 'wikipage.content' ).add( setup );
})();