Difference between revisions of "MediaWiki:Gadget-calculator-core.js"

From WikiAnesthesia
Line 1: Line 1:
( function(){
( function() {
     mw.calculators = {
     mw.calculators = {
         variables: {},
         variables: {},
Line 5: Line 5:
             for( var varName in variables ) {
             for( var varName in variables ) {
                 if( mw.calculators.variables.hasOwnProperty( varName ) ) {
                 if( mw.calculators.variables.hasOwnProperty( varName ) ) {
                     console.warn( 'Calculation variable' + varName + ' already defined.' );
                     console.warn( 'Calculation variable "' + varName + '" already defined.' );
                     continue;
                     continue;
                 }
                 }
Line 69: Line 69:
         init: function() {
         init: function() {
             mw.calculators.createUnits();
             mw.calculators.createUnits();
        },
        setValue: function( varName, value ) {
            // TODO validation
            if( !mw.calculators.variables.hasOwnProperty( varName ) ) {
                return false;
            }
            if( mw.calculators.variables[ varName ].hasOwnProperty( 'type' ) &&
                mw.calculators.variables[ varName ].type === 'number' &&
                typeof value !== 'object'
            ) {
                value = math.unit( value );
            }
            mw.calculators.variables[ varName ].value = value;
            return true;
         }
         }
     };
     };


     mw.calculators.init();
     mw.calculators.init();
console.log('loaded calculator-core');
console.log(mw);


}() );
}() );

Revision as of 09:16, 16 July 2021

( function() {
    mw.calculators = {
        variables: {},
        addVariables: function( variables ) {
            for( var varName in variables ) {
                if( mw.calculators.variables.hasOwnProperty( varName ) ) {
                    console.warn( 'Calculation variable "' + varName + '" already defined.' );
                    continue;
                }

                var varData = variables[ varName ];

                mw.calculators.variables[ varName ] = varData;
            }
        },
        createUnits: function() {
            // Create aliases for abbreviations of existing units
            math.createUnit( 'dy', {
                definition: '1 day'
            } );

            math.createUnit( 'mo', {
                definition: '1 month'
            } );

            math.createUnit( 'yr', {
                definition: '1 year'
            } );

            // Body weight needs to be treated as a different fundamental unit type compared to mass for stoichiometry
            // Gram-weight, which uses short SI prefixes (e.g. 1 kgwt = 1000 gwt)
            math.createUnit( 'gwt', {
                prefixes: 'short'
            } );

            // Pound-weight, which uses no prefixes
            math.createUnit( 'lbwt', {
                definition: '453.59237 gwt'
            } );

            math.createUnit( 'puff' );

            math.createUnit( 'unit', {
                aliases: [ 'units' ]
            } );

            math.createUnit( 'vial', {
                aliases: [ 'vials' ]
            } );

        },
        getCookieKey: function( varName ) {
            return 'calculators-var-' + varName;
        },
        getVariable: function( varName ) {
            if( mw.calculators.variables.hasOwnProperty( varName ) ) {
                return mw.calculators.variables[ varName ];
            } else {
                return null;
            }
        },
        getValue: function( varName ) {
            if( mw.calculators.variables.hasOwnProperty( varName ) ) {
                return mw.calculators.variables[ varName ].value;
            } else {
                return null;
            }
        },
        init: function() {
            mw.calculators.createUnits();
        },
        setValue: function( varName, value ) {
            // TODO validation
            if( !mw.calculators.variables.hasOwnProperty( varName ) ) {
                return false;
            }

            if( mw.calculators.variables[ varName ].hasOwnProperty( 'type' ) &&
                mw.calculators.variables[ varName ].type === 'number' &&
                typeof value !== 'object'
            ) {

                value = math.unit( value );
            }

            mw.calculators.variables[ varName ].value = value;

            return true;
        }
    };

    mw.calculators.init();

}() );