Skip to content
Snippets Groups Projects
Select Git revision
  • 1f89ea46d803297a15317200f498e8afac0bbe3e
  • master default protected
  • server_prod
  • server_dev
  • next_version
  • laurent-change.log
  • HEAD
  • 2019.03.00
  • 2019.02.07
  • 2019.02.06
  • 2019.02.05
  • 2019.02.04
  • 2019.02.03
  • 2019.02.02
  • 2019.02.01
  • 2019.02.00
  • 2019.01.02
  • 2019.01.01
  • 2019.01.00
  • 2018.04.04
  • 2018.04.03
  • 2018.04.02
  • 2018.04.01
  • 2018.04.00
24 results

app.js

Blame
  • Forked from Open source / vMap
    27 commits behind, 2 commits ahead of the upstream repository.
    Armand Bahi's avatar
    Armand Bahi authored
    0466ef21
    History
    app.js 5.70 KiB
    /* global goog */
    
    'use strict';
    
    goog.provide("vitis");
    goog.require("goog.crypt.Md5");
    goog.require("goog.crypt.Sha1");
    goog.require("goog.crypt.Sha256");
    goog.require("goog.crypt.Sha512");
    goog.require("goog.crypt.base64");
    
    /**
     * Vitis object
     * @export
     */
    var vitisApp = function () {};
    
    /**
     * Contains the vitisApp events
     * @type object
     */
    vitisApp.oEvents = {};
    
    /**
     * Add a function to a certain event
     * @param {string} eventName
     * @param {function} callback
     */
    vitisApp.on = function (eventName, callback) {
        if (goog.isDefAndNotNull(vitisApp.oEvents[eventName])) {
            vitisApp.oEvents[eventName].push(callback);
        } else {
            vitisApp.oEvents[eventName] = [callback];
        }
    };
    
    /**
     * Broadcast all the function from a certain event
     * @param {string} eventName
     */
    vitisApp.broadcast = function (eventName) {
        if (goog.isDefAndNotNull(vitisApp.oEvents[eventName])) {
            for (var i = 0; i < vitisApp.oEvents[eventName].length; i++) {
                vitisApp.oEvents[eventName][i].call();
            }
        }
    };
    
    /**
     * Convert some characters to HTML entities.
     * @param {string} sString
     * @return {string}
     */
    vitisApp["htmlentities"] = function (sString) {
        var aCharToEncode = ["à", "â", "ç", "è", "é", "ê", "î", "ï", "ô", "ù", "û"];
        return sString.replace(/./gm, function (s) {
            if (aCharToEncode.indexOf(s) != -1)
                return "&#" + s.charCodeAt(0) + ";";
            else
                return s;
        });
    };
    
    /**
     * Allow sub-modals creating backtops on the parents element
     */
    $(document).ready(function () {
        $(document).on('show.bs.modal', '.modal', function (event) {
            $(this).parent().append('<div class="submodal-backdrop modal-backdrop fade in"></div>');
        });
        $(document).on('hide.bs.modal', '.modal', function (event) {
            $(this).parent().find('.submodal-backdrop').remove();
        });
    });
    
    /**
     * Remove the accents from a, e, i, o, u, n, c
     * @returns {String}
     */
    String.prototype.withoutAccents = function () {
        var accent = [
            /[\300-\306]/g, /[\340-\346]/g, // A, a
            /[\310-\313]/g, /[\350-\353]/g, // E, e
            /[\314-\317]/g, /[\354-\357]/g, // I, i
            /[\322-\330]/g, /[\362-\370]/g, // O, o
            /[\331-\334]/g, /[\371-\374]/g, // U, u
            /[\321]/g, /[\361]/g, // N, n
            /[\307]/g, /[\347]/g // C, c
        ];
        var noaccent = ['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'N', 'n', 'C', 'c'];
    
        var str = this;
    
        // Patch erreur lors de la compilation en mode SIMPLE
        if (goog.isObject(str)) {
            var sTmp = '';
            for (var key in str) {
                if (str.hasOwnProperty(key)) {
                    sTmp += str[key];
                }
            }
            str = sTmp
        }
    
        for (var i = 0; i < accent.length; i++) {
            str = str.replace(accent[i], noaccent[i]);
        }
    
        return str;
    };
    
    /**
     * Remove from the string the URL params defined in aForbiddenParams
     * @param {array} aForbiddenParams
     * @returns {String}
     */
    String.prototype.removeURLParams = function (aForbiddenParams) {
    
        var sUrl = this;
        var paramIndex, nextParamIndex;
    
        // Patch erreur lors de la compilation en mode SIMPLE
        if (goog.isObject(sUrl)) {
            var sTmp = '';
            for (var key in sUrl) {
                if (sUrl.hasOwnProperty(key)) {
                    sTmp += sUrl[key];
                }
            }
            sUrl = sTmp
        }
    
        for (var i = 0; i < aForbiddenParams.length; i++) {
    
            // Cas où le paramètre commence par &
            paramIndex = sUrl.toLowerCase().indexOf('&' + aForbiddenParams[i] + '=');
            if (paramIndex !== -1) {
    
                // Index du prochain paramètre (où de la fin de la chaine)
                nextParamIndex = sUrl.toLowerCase().indexOf('&', paramIndex + 1);
    
                // Enlève le paramètre de la chaine
                if (nextParamIndex > 0) {
                    sUrl = sUrl.replace(sUrl.slice(paramIndex, nextParamIndex), '');
                } else {
                    sUrl = sUrl.replace(sUrl.slice(paramIndex), '');
                }
                continue;
            }
    
            // Cas où le paramètre commence par ?
            paramIndex = sUrl.toLowerCase().indexOf('?' + aForbiddenParams[i] + '=');
            if (paramIndex !== -1) {
    
                // Index du prochain paramètre (où de la fin de la chaine)
                nextParamIndex = sUrl.toLowerCase().indexOf('&', paramIndex + 1);
    
                // Enlève le paramètre de la chaine
                if (nextParamIndex > 0) {
                    sUrl = sUrl.replace(sUrl.slice(paramIndex, nextParamIndex + 1), '?');
                } else {
                    sUrl = sUrl.replace(sUrl.slice(paramIndex), '');
                }
                continue;
            }
        }
        return sUrl;
    };
    
    var md5 = function (input) {
        var oCrypt = new goog.crypt.Md5();
        var bytes = goog.crypt.stringToByteArray(input);
        oCrypt.update(bytes);
        var hash = oCrypt.digest();
        hash = goog.crypt.byteArrayToHex(hash);
        return hash;
    };
    
    var sha1 = function (input) {
        var oCrypt = new goog.crypt.Sha1();
        var bytes = goog.crypt.stringToByteArray(input);
        oCrypt.update(bytes);
        var hash = oCrypt.digest();
        hash = goog.crypt.byteArrayToHex(hash);
        return hash;
    };
    
    var sha256 = function (input) {
        var oCrypt = new goog.crypt.Sha256();
        var bytes = goog.crypt.stringToByteArray(input);
        oCrypt.update(bytes);
        var hash = oCrypt.digest();
        hash = goog.crypt.byteArrayToHex(hash);
        return hash;
    };
    
    var sha512 = function (input) {
        var oCrypt = new goog.crypt.Sha512();
        var bytes = goog.crypt.stringToByteArray(input);
        oCrypt.update(bytes);
        var hash = oCrypt.digest();
        hash = goog.crypt.byteArrayToHex(hash);
        return hash;
    };
    
    /**
     * Object.foreach polyfill
     */
    if (!NodeList.prototype.forEach) {
        NodeList.prototype.forEach = Array.prototype.forEach;
    }