function generarGraficoB3() {
    google.charts.setOnLoadCallback(dibujarGraficoB3);
}



function dibujarGraficoB3() {

    $.get(
        "GetResultsJSON", {
            _token: $('meta[name="csrf-token"]').attr('content'),
            id_reference: $("#id_corrida_analito").val()
        })
    .done(function (json_elements) {

        let dataElements_b3 = [[
            "x",
            "y",
            "Límite inferior",
            "Límite superior",
            "Limite APS inferior",
            "Limite APS superior"
        ]];

        let conjuntoB3_x = [];
        let conjuntoB3_y = [];
        let diferencia_maxima_permisible = parseFloat(json_elements["info_analito"]["diferencia_maxima_permisible"]/100);
        let limite_aps = parseFloat(json_elements["info_analito"]["limite_aps"]/100);
        if (diferencia_maxima_permisible == 0) diferencia_maxima_permisible = 0.1;
        if (limite_aps == 0) limite_aps = 0.05;
        let linea_diferencia_maxima_permisible = [];
        let linea_limite_aps = [];
        for (i = 0; i < json_elements["resultados"].length; i++) {
            linea_diferencia_maxima_permisible.push(diferencia_maxima_permisible*parseFloat(json_elements["resultados"][i].promedio_ambos_metodos));
            linea_limite_aps.push(limite_aps*parseFloat(json_elements["resultados"][i].promedio_ambos_metodos));
        }
        for (i = 0; i < json_elements["resultados"].length; i++) {

            dataElements_b3.push([
                parseFloat(json_elements["resultados"][i].promedio_ambos_metodos),
                parseFloat(json_elements["resultados"][i].metodo_prueba_menos_metodo_comparacion),
                -1*linea_diferencia_maxima_permisible[i],
                linea_diferencia_maxima_permisible[i],
                -1*linea_limite_aps[i],
                linea_limite_aps[i]
            ]);

            conjuntoB3_x.push(json_elements["resultados"][i].promedio_ambos_metodos);
            conjuntoB3_y.push(Math.abs(json_elements["resultados"][i].metodo_prueba_menos_metodo_comparacion));
            conjuntoB3_y.push(-diferencia_maxima_permisible)
            conjuntoB3_y.push(diferencia_maxima_permisible)
            conjuntoB3_y.push(-limite_aps)
            conjuntoB3_y.push(limite_aps)
        }

        var data = google.visualization.arrayToDataTable(dataElements_b3);
        var options = {
            title: 'Media de prueba - media del comparativo vs promedio de métodos',
            titleTextStyle: {
                color: '#2874A6',
                fontSize: 15,
                alignment: 'center'
            },
            annotations: {
                textStyle: {
                  fontSize: 12,
                  color: '#222222',
                }
            },
            hAxis: { // Eje X
                title: "Promedio del método comparativo y el método de prueba",
                viewWindow:{
                    min:Math.min.apply(null,conjuntoB3_x),
                    max:Math.max.apply(null,conjuntoB3_x)
                }
            },
            vAxis: { // Eje Y
                title: "Diferencia en unidades de " + json_elements["info_analito"].nom_unidad_metodologia_comparacion + " entre " + json_elements["info_analito"].nom_analizador_prueba + " y " + json_elements["info_analito"].nom_analizador_comparacion,
                viewWindow:{
                    min:Math.min((-1*Math.max.apply(null,conjuntoB3_y)), -linea_diferencia_maxima_permisible.at(-1) - 0.005),
                    max:Math.max(Math.max.apply(null,conjuntoB3_y), linea_diferencia_maxima_permisible.at(-1) + 0.005)
                }
            },
            series: {
                1: {
                    type: 'line',
                    pointSize: 0,
                    opacity: 1,
                    color: "#E3251F",
                    lineWidth: 2
                },
                2: {
                    type: 'line',
                    pointSize: 0,
                    opacity: 1,
                    color: "#E3251F",
                    lineWidth: 2
                },
                3: {
                    type: 'line',
                    pointSize: 0,
                    opacity: 1,
                    color: "#095BDA",
                    lineWidth: 2
                },
                4: {
                    type: 'line',
                    pointSize: 0,
                    opacity: 1,
                    color: "#095BDA",
                    lineWidth: 2
                }
            },
            chartArea: {
                width: '89%',
                height: '70%',
                left: '10%'
            },
            legend: {
                position: 'none'
            },
            colors: ["#000"],
            pointShape: 'square',
            pointSize: 8,
            opacity: 0.8,
            width: 480,
            height: 400,
        };

        var chart = new google.visualization.ScatterChart(document.getElementById('contenedor_grafica_B3'));
        google.visualization.events.addListener(chart, 'ready', function ()      {
            $("#base64_grafico_B3").val(chart.getImageURI());
        });
        chart.draw(data, options);
    })
    .fail(function () {
        notificacion("normal", "error", "Error al cargar la información de la gráfica B3...");
    })
    .always(function (sdsads) {
        console.log(sdsads);
    });
}
