var EventosLogsES = {
    url_get_stats: "/cgi-cpn/prontus_admin_get_stats_es.cgi",
    fecha_reciente: fecha_reciente,
    graph_ctx: null,
    histograma: null,

    init: function() {
        $('#queries_ultimo_dia').on("click", function(e) {
            $.getJSON(EventosLogsES.url_get_stats+'?_prontus_id='+Admin.prontus_id+'&fecha='+EventosLogsES.fecha_reciente+'&periodo=last_day', function(data) {
                $('#totales').html(data.total);
                $('#texto_fechas').html(EventosLogsES.get_texto_fh(data));
                EventosLogsES.graficar(data);
                EventosLogsES.generar_tabla(data);
            });
        });
        $('#queries_ultima_semana').on("click", function(e) {
            $.getJSON(EventosLogsES.url_get_stats+'?_prontus_id='+Admin.prontus_id+'&fecha='+EventosLogsES.fecha_reciente+'&periodo=weeks', function(data) {
                $('#totales').html(data.total);
                $('#texto_fechas').html(EventosLogsES.get_texto_fh(data));
                EventosLogsES.graficar(data);
                EventosLogsES.generar_tabla(data);
            });
        });
        $('#queries_ultimo_mes').on("click", function(e) {
            $.getJSON(EventosLogsES.url_get_stats+'?_prontus_id='+Admin.prontus_id+'&fecha='+EventosLogsES.fecha_reciente+'&periodo=months', function(data) {
                $('#totales').html(data.total);
                $('#texto_fechas').html(EventosLogsES.get_texto_fh(data));
                EventosLogsES.graficar(data);
                EventosLogsES.generar_tabla(data);
            });
        });
        // preparamos el canvas del gráfico.
        EventosLogsES.graph_ctx = $('#histograma');
        EventosLogsES.graficar(queries);
        EventosLogsES.generar_tabla(queries);
    },

    get_texto_fh: function(datos) {
        let texto_fechahoras = '';
        if (datos.fecha_ini == datos.fecha_fin) {
            texto_fechahoras = " el " + datos.fecha_ini;
        } else {
            texto_fechahoras = "entre el " + datos.fecha_ini + " y el " + datos.fecha_fin;
        }
        return texto_fechahoras;
    },

    /** genera una serie de filas con las queries más populares en orden DESC. */
    generar_tabla: function(datos) {
        let keys = Object.keys(datos.queries_populares);
        let ordered_keys = Object.keys(datos.queries_populares).sort(function(a,b){return datos.queries_populares[a]-datos.queries_populares[b]}).reverse();
        
        let tabla_tds = '';
        for (i = 0; i < keys.length; i++) {
            let k = ordered_keys[i];
            tabla_tds += `<tr><td>${k}</td><td>${datos.queries_populares[k]}</td></tr>`;
        }
        $('#tabla_queries_populares tbody').html(tabla_tds);
    },

    graficar: function(datos) {
        // ordenamos los datos por fecha u hora.
        let keys = Object.keys(datos.queries);
        let ordered_keys = {};
        keys.sort();
        for (i = 0; i < keys.length; i++) {
            let k = keys[i];
            ordered_keys[k] = datos.queries[keys[i]];
        }
        let labels = [];
        let data = [];
        keys.forEach(function(k) {
            labels.push(k);
            data.push(ordered_keys[k]);
        });

        let texto_fechahoras = '';
        if (datos.fecha_ini == datos.fecha_fin) {
            texto_fechahoras = "Búsquedas el " + datos.fecha_ini;
        } else {
            texto_fechahoras = "Búsquedas entre el " + datos.fecha_ini + " y  el " + datos.fecha_fin;
        }
        new Chart(EventosLogsES.graph_ctx, {
            type: 'line',
            data: {
                labels: labels,
                datasets: [{
                    label: texto_fechahoras,
                    data: data,
                    spanGaps: true,
                    lineTension: 0.1,
                    borderColor: '#999',
                    backgroundColor: 'transparent'
                }]
            },
            options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero: true
                        }
                    }]
                }
            }
        });
    }
};

$(document).ready(function () {
    EventosLogsES.init();
});
