nw-skeleton

Source: app-wrapper/js/mixin/wrapperMethods.js

/**
 * @fileOverview wrapperMethods mixin file
 * @author Dino Ivankov <dinoivankov@gmail.com>
 * @version 1.3.1
 */

const _ = require('lodash');
var _appWrapper = window.getAppWrapper();

/**
 * Wrapper methods mixin
 *
 * @name MixinWrapperMethods
 * @memberOf mixins
 */
var MixinWrapperMethods  = {
    methods: {
        callViewHandler: _appWrapper.callViewHandler.bind(_appWrapper),
        /**
         * Logs output to console
         *
         * @param  {mixed} value  Value to log
         * @return {undefined}
         */
        log: function(value){
            console.log(value);
        },
        /**
         * Converts value to JSON and returns it
         *
         * @param  {mixed} value        Value to convert
         * @param  {Boolean} minified   Flag to force minified JSON output
         * @return {string}             JSON-encoded value representation
         */
        toJson: function(value, minified){
            return _appWrapper.getHelper('util').toJson(value, minified);
        },
        /**
         * Takes a var and returns default value if no value founr
         *
         * @return {mixed} Value or default value from arguments
         */
        def: function(){
            let value;
            if (arguments && arguments.length){
                value = arguments[0];
            }
            let defaultTexts = Array.prototype.slice.call(arguments, 1, arguments.length);
            if (_.isUndefined(value)){
                for(let i=0; i<defaultTexts.length;i++){
                    value = defaultTexts[i];
                    if (!_.isUndefined(value)){
                        break;
                    }
                }
            }
            if (_.isUndefined(value)){
                value = '';
            }
            return value;
        },

        /**
         * Takes a var and returns default value if no value found or value is falsy
         *
         * @return {mixed} Value or default value from arguments
         */
        defAll: function(){
            let value;
            if (arguments && arguments.length){
                value = arguments[0];
            }
            let defaultTexts = Array.prototype.slice.call(arguments, 1, arguments.length);
            if (!(!_.isUndefined(value) && value)){
                for(let i=0; i<defaultTexts.length;i++){
                    value = defaultTexts[i];
                    if (!_.isUndefined(value)){
                        break;
                    }
                }
            }
            if (_.isUndefined(value)){
                value = '';
            }
            return value;
        },

        /**
         * Handler for nw-model directive triggered on model update
         *
         * @param  {Event} e    Event that triggered the method
         * @return {undefined}
         */
        onUpdateModel: function(e) {
            // console.log('nwModel onUpdateModel', e.target);
            if (e && e.target && e.target.triggerCustomEvent && _.isFunction(e.target.triggerCustomEvent)) {
                e.target.triggerCustomEvent('input');
                e.target.triggerCustomEvent('change');
            }
        },

        /**
         * Handler for 'input' event on fields bound to nw-model directive
         *
         * @param  {Event} e    Event that triggered the method
         * @return {undefined}
         */
        nwModelInput: function (e){

            let utilHelper = _appWrapper.getHelper('util');
            let binding = e.target.nwModelData.binding;
            let context = e.target.nwModelData.vnode.context;
            let value = e.target.getInputValue();
            if (binding.modifiers.number){
                value = +value;
            }
            if (binding.modifiers.trim){
                value = _.trim(value);
            }
            if (binding.modifiers.literal){
                utilHelper.setVar(binding.expression, value);
            } else if (binding.modifiers.eval){
                utilHelper.setVar(e.target.nwModelData.propName, value);
            } else {
                context[binding.expression] = value;
            }
        },

        /**
         * Converts decimal value to hexadecimal
         *
         * @param  {Number} decimalValue Decimal value
         * @return {string}              Hexadecimal value
         */
        decToHex: function(decimalValue){
            return _appWrapper.getHelper('format').decToHex(decimalValue);
        },

        /**
         * Converts hexadecimal value to decimal
         *
         * @param  {string} hexadecimalValue Hexadecimal value
         * @return {Number}                  Decimal value
         */
        hexToDec: function(hexadecimalValue){
            return _appWrapper.getHelper('format').hexToDec(hexadecimalValue);
        },

        /**
         * Convers hex color representation to r,g,b array
         *
         * @param  {string} hexColor Hexadecimal color value
         * @return {Integer[]}       r,g,b array
         */
        hexToDecColor: function(hexColor){
            return _appWrapper.getHelper('format').hexToDecColor(hexColor);
        },

        /**
         * Converts r,g,b array to hexadecimal color value
         *
         * @param  {Integer[]} decColorArray    r,g,b values arrat
         * @return {string}                     Hexadecimal color value
         */
        decToHexColor: function(decColorArray){
            return _appWrapper.getHelper('format').decToHexColor(decColorArray);
        },

        /**
         * Formats file size from bytes to human-readable format
         *
         * @param  {Integer} bytes File size in bytes
         * @return {string}        Formatted file size
         */
        formatFileSize: function(bytes){
            return _appWrapper.getHelper('format').formatFileSize(bytes);
        },
        /**
         * Checks whether debug is enabled and returns value accordingly
         *
         * @return {Boolean} True if debug is on, false otherwise
         */
        isDebugEnabled: function(){
            return _appWrapper.isDebugEnabled();
        },
        /**
         * Rounds number to decimals from argument
         *
         * @param  {Number}     value    Value to round
         * @param  {Integer}    decimals Max decimal places
         * @return {Number}              Rounded value
         */
        round: function(value, decimals){
            return _.round(value, decimals);
        }

    }
};
exports.mixin = MixinWrapperMethods;