Source: index.js


/**
 * Éste módulo es el encargado de controlar la funcionalidad de la página de inicio.
 *
 * @module module_index
 */
var module_index = (function() {
    
    var _VERBOSE = true;

    _VERBOSE ? console.log("*** loading index... ***") : _VERBOSE;

    var _language_module_index;
    var _toastr = toastr;
    var _iTrans;
    var _tipo_modulo;
    var _link_val;

    var _url_front;
    var _url_api;
    var _url_nicho;
    var _url_comunidad;



    /**
     * Método encargado de asignar el direccionamiento del ambiente del sistema, 
     * tanto para el ambiente gráfico del frontend, como la versión que será utilizada del backend.
     *
     * @function  startModule
     *
     * @param {integer} tipo_modulo - Módulo inicial que sera configurado. 1. Nicho ecológico, 2. Redes de inferencia y 3. Inicio
     */
    function startModule(tipo_modulo) {
        
        _VERBOSE ? console.log("startModule Index") : _VERBOSE;
        
        _url_front = config.url_front
        _url_api = config.url_api
        _url_nicho = config.url_nicho
        _url_comunidad = config.url_comunidad
        _VERBOSE = config.verbose
        _tipo_modulo = 2; // index
        
        
        // Se cargan los archivos de idiomas y depsues son cargados los modulos subsecuentes
        _VERBOSE ? console.log(this) : _VERBOSE
//        _VERBOSE ? console.log("before language_module INDEX") : _VERBOSE;
        _language_module_index = language_module(_VERBOSE);
        _language_module_index.startLanguageModule(this, _tipo_modulo);

    }
    
            
    /**
     * Método de configuración e inicialización de componentes utilizados en la primera vista del sistema.
     *
     * @function _initializeComponents
     * @public
     */
    function _initializeComponents() {

        _VERBOSE ? console.log("_initializeComponents") : _VERBOSE;

        _toastr.options = {
            "debug": false,
            "onclick": null,
            "fadeIn": 300,
            "fadeOut": 1000,
            "timeOut": 2000,
            "extendedTimeOut": 2000,
            "positionClass": "toast-bottom-center",
            "preventDuplicates": true,
            "progressBar": true
        };

        $("#link_nicho").prop("href",_url_nicho)
        $("#link_redes").prop("href",_url_comunidad)


        $("#docs_front").prop("href",_url_front+"/frontend-documentation")
        $("#docs_front").text(_url_front+"/frontend-documentation")

        $("#api_docs").prop("href",_url_api+"/api-reference")
        $("#api_docs").text(_url_api+"/api-reference")


        $("#send_email_login").click(function() {
            _VERBOSE ? console.log("send_email_login") : _VERBOSE;
            _VERBOSE ? console.log("valido: " + $("#email_address")[0].validity["valid"]) : _VERBOSE;

            var regexp = /^(([A-Za-z]+[\-\']?)*([A-Za-z]+)?\s)+([A-Za-z]+[\-\']?)*([A-Za-z]+)?$/;

            if (!regexp.test($("#user_name").val())) {
                _toastr.error(_iTrans.prop("invalid_user"));
                $("#user_name").val("");
                $("#email_address").val("");
                return;
            }

            if ($("#email_address")[0].validity["valid"]) {
                var email = $("#email_address").val();
                var usuario = $("#user_name").val();

                _VERBOSE ? console.log("email: " + email) : _VERBOSE;
                _VERBOSE ? console.log("usuario: " + usuario) : _VERBOSE;

                $.ajax({
                    url: _url_api + "/niche/especie/getUserReg",
                    type: "post",
                    data: {
                        email: email
                    },
                    success: function(d) {
                        var res = d.data;
                        
                        var count = parseInt(res[0].count);
                        _VERBOSE ? console.log("count: " + count) : _VERBOSE;

                        if (count === 0) {
                            $.ajax({
                                url: _url_api + "/niche/especie/setUserReg",
                                type: "post",
                                data: {
                                    email: email,
                                    usuario: usuario
                                },
                                success: function(d) {
                                    _VERBOSE ? console.log("registrado") : _VERBOSE;
                                    _VERBOSE ? console.log(d) : _VERBOSE;
                                    $("#modalLogin").modal("hide");
                                    window.location.replace(_link_val);
                                },
                                error: function(jqXHR, textStatus, errorThrown) {
                                    _VERBOSE ? console.log("error: " + jqXHR) : _VERBOSE;
                                    _VERBOSE ? console.log("error: " + textStatus) : _VERBOSE;
                                    _VERBOSE ? console.log("error: " + errorThrown) : _VERBOSE;

                                    $("#email_address").val("");
                                    $("#user_name").val("");

                                    $("#modalLogin").modal("hide");
                                    _toastr.error(_iTrans.prop("general_error"));
                                    // _module_toast.showToast_BottomCenter(_iTrans.prop('lb_correo_error'), "error")
                                }
                            });
                        } else {
                            _VERBOSE ? console.log("Ya registrado") : _VERBOSE;
                            $("#modalLogin").modal("hide");
                            window.location.replace(_link_val);
                        }
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        _VERBOSE ? console.log("error: " + textStatus) : _VERBOSE;

                        $("#email_address").val("");
                        $("#user_name").val("");
                        $("#modalLogin").modal("hide");

                        _toastr.error(_iTrans.prop("general_error"));
                    }
                });

            } else {
                $("#user_name").val("");
                $("#email_address").val("");
                _toastr.error(_iTrans.prop("invalid_user"));
            }
        });




        $("#btn_tutorial").click(function() {
            window.open(_url_front + "/docs/tutorial.pdf");
        });

        var timer = 5000;
        
        var names_nicho = ["lb_index_hist_decil", "lb_index_hist_score", "lb_index_map_pres"];
        var names_net = [ "lb_index_map_riq", "lb_index_tbl_rel", "lb_index_net"];
        
        var index_nicho = 0;
        var index_net = 0;
        $("#lb_ini_nicho").text(_iTrans.prop(names_nicho[names_nicho.length-1]));
        
        setInterval(function() {
            $("#lb_ini_nicho").text(_iTrans.prop(names_nicho[index_nicho]));
            index_nicho = index_nicho === 2 ? 0 : ++index_nicho;
        }, timer);
        
        $("#lb_ini_net").text(_iTrans.prop(names_net[names_net.length-1]));
        setInterval(function() {
            $("#lb_ini_net").text(_iTrans.prop(names_net[index_net]));
            index_net = index_net === 2 ? 0 : ++index_net;
        }, timer);



        $(".box_nicho").bgswitcher({
            images: [
                _url_front + "/images/mapa.png",
                _url_front + "/images/decil.png",
                _url_front + "/images/score_celda.png"],
            effect: "fade",
            interval: timer
        });

        $(".box_net").bgswitcher({
            images: [
                _url_front + "/images/red.png",
                _url_front + "/images/mapa_riqueza.png",
                _url_front + "/images/tabla_red.png"],
            effect: "fade",
            interval: timer
        });

    }


    /**
     * Este método inicializa el módulo de internacionalización del sistema 
     * y la configuración e inicialización de la página de aterrizaje del sistema.
     *
     * @function loadModules
     */
    function loadModules() {
        
        _VERBOSE ? console.log("loadModules INDEX") : _VERBOSE;
        _iTrans = _language_module_index.getI18();
        _initializeComponents();
        
    }

    // retorna solamente un objeto con los miembros que son públicos.
    return {
        startModule: startModule,
        loadModules: loadModules
    };

})();

var modulo = 2
module_index.startModule(modulo)