<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Wabbajack Metrics</title>
    <script
            src="https://code.jquery.com/jquery-3.5.1.min.js"
            integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
            crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
    <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-colorschemes"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
</head>
<body>

<h2>Finished Install Counts</h2>
<canvas id="finished_install_count" width="800" height="600"></canvas>
<hr/>

<h2>Begin Download</h2>
<canvas id="begin_download_chart" width="800" height="600"></canvas>
<hr/>

<h2>Begin Install</h2>
<canvas id="begin_install_chart" width="800" height="600"></canvas>
<hr/>

<h2>Finished Install</h2>
<canvas id="finished_install_chart" width="800" height="600"></canvas>
<hr/>

<h2>Started Wabbajack</h2>
<canvas id="started_wabbajack_chart" width="800" height="600"></canvas>
<hr/>




<script>
    
    var getReport = function(subject, callback) {
        $.getJSON("/metrics/report/"+subject, callback)
    }
    
    var makeChart = function(ele, group) {

        var result_fn = function (data) {
                    var data = _.filter(data, series => _.some(series.values, v => v > 1));
                    var labels = _.uniq(_.flatten(_.map(data, series => series.labels)));
                    var datasets = _.map(data, series => {
                        return {
                            label: series.seriesName,
                            fill: false,
                            data: _.last(series.values, 30)
                        }});
                    var ctx = document.getElementById(ele).getContext('2d');
                    var chart = new Chart(ctx, {
                        // The type of chart we want to create
                        type: 'line',

                        // The data for our dataset
                        data: {
                            labels: _.last(labels, 30),
                            datasets: datasets},

                        // Configuration options go here
                        options: {scales: {xAxes: [{stacked:true}], yAxes: [{stacked:true}]}}
                    });
                };
        getReport(group, result_fn);
    };


    var makePieChart = function(ele, group) {

        var result_fn = function (data) {
                    var data = _.filter(data, series => _.some(series.values, v => v > 2));
                    var labels = _.map(data, series => series.seriesName);
                    var datasets = {data : _.map(data, series => {
                            return _.reduce(series.values, (x, y) => x + y, 0)})};
                    console.log(datasets);
                    console.log(labels);
                    var ctx = document.getElementById(ele).getContext('2d');
                    var chart = new Chart(ctx, {
                        // The type of chart we want to create
                        type: 'pie',

                        // The data for our dataset
                        data: {
                            labels: labels,
                            datasets: [datasets]},

                        // Configuration options go here
                        options: {}
                    });
                };
        getReport(group, result_fn)
    };

    makeChart("begin_download_chart", "downloading");
    makeChart("begin_install_chart", "begin_install");
    makeChart("finished_install_chart", "finish_install");
    makeChart("started_wabbajack_chart", "started_wabbajack");
    makePieChart("finished_install_count", "finish_install");
</script>
</body>
</html>