App-MFILE-WWW

 view release on metacpan or  search on metacpan

share/js/core/lib.js  view on Meta::CPAN

        nullify: function (val) {
            console.log("Entering nullify() with value", val);
            if (isStringNotEmpty(val)) {
                if (val.indexOf('(') !== -1) {
                    return null;
                }
                return val;
            }
            return null;
        },

        objectify: function (st) {
            // if st ("something") is not a traditional object
            // like { "foo": "bar" }, turn it into {}
            if (st === undefined || st === null || typeof st !== 'object') {
                return {};
            }
            return st;
        },

        // check current employee's privilege against a given ACL profile
        privCheck: function (p) {

            var cep = currentUser('priv'),
                r,
                yesno;

            if ( cf('testing') && ! cep ) {
                cep = 'passerby';
            }
            if ( ! cep ) {
                console.log("Cannot determine priv level of current user! Falling back to sane value \"passerby\"");
                currentUser('priv', 'passerby');
                cep = currentUser('priv');
            }

            if (p === 'passerby' && cep) {
                r = true;
                yesno = "Yes.";
            } else if (p === 'inactive' && (cep === 'inactive' || cep === 'active' || cep === 'admin')) {
                r = true;
                yesno = "Yes.";
            } else if (p === 'active' && (cep === 'active' || cep === 'admin')) {
                r = true;
                yesno = "Yes.";
            } else if (p === 'admin' && cep === 'admin') {
                r = true;
                yesno = "Yes.";
            } else {
                r = false;
                yesno = "No.";
            }

            // console.log("Does " + cep + " user satisfy ACL " + p + "? " + yesno);
            return r;
        }, // privCheck

        // reverse-video a row (on/off)
        reverseVideo: function (row, onoff) {
            if (onoff === true) {
                $('#row' + row).css('background-color','#000000');
                $('#row' + row).css('color','#ffffff');
            }
            if (onoff === false) {
                $('#row' + row).css('background-color','#d0e4fe');
                $('#row' + row).css('color','#000000');
            }
        },

        // right pad a string with spaces
        rightPadSpaces: function (toPad, padto) {
            var strToPad = ((toPad === null) ? '' : toPad).toString();
            // console.log("Padding " + strToPad + " to " + padto + " spaces.");
            var sp = ' ',
                padSpaces = sp.repeat(padto - String(strToPad).length);
            return strToPad.concat(padSpaces);
        },

        // shallow object copy, from
        // http://blog.soulserv.net/understanding-object-cloning-in-javascript-part-i/
        shallowCopy: function (original) {
            // First create an empty object with
            // same prototype of our original source
            var clone = Object.create(Object.getPrototypeOf(original)),
                i, keys = Object.getOwnPropertyNames(original);
            for (i = 0; i < keys.length; i++) {
                // copy each property into the clone
                Object.defineProperty(clone, keys[i],
                    Object.getOwnPropertyDescriptor(original, keys[i])
                );
            }
            return clone;
        },

        // eliminate duplicates from array - use only for arrays containing
        // similar primitives (e.g. arrays of numbers, arrays of zip codes, etc.)
        // Credits to: https://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array
        uniq: function (a) {
            var seen = {};
            return a.filter(function(item) {
                return seen.hasOwnProperty(item) ? false : (seen[item] = true);
            });
        },

        // pause main thread for n milliseconds
        //wait: function (ms) {
        //    var start = new Date().getTime();
        //    var end = start;
        //    while(end < start + ms) {
        //        end = new Date().getTime();
        //    }
        //},

    };

});



( run in 1.709 second using v1.01-cache-2.11-cpan-f56aa216473 )