podstat-counts.php 2.47 KB
Newer Older
David Morley's avatar
David Morley committed
1 2
<?php

3 4 5 6 7 8
/**
 * Show detailed pod stats.
 */

declare(strict_types=1);

9 10 11 12 13
use RedBeanPHP\R;

// Required parameters.
($_domain = $_GET['domain'] ?? null) || die('no domain given');

14
require_once __DIR__ . '/boot.php';
David Morley's avatar
David Morley committed
15

16
$sql = "
17 18 19 20 21 22 23 24 25 26
    SELECT
        to_char(date_checked, 'yyyy MM') AS yymm,
        count(*) AS total_checks,
        round(avg(total_users)) AS users,
        round(avg(local_posts)) AS local_posts,
        round(avg(comment_counts)) AS comment_counts
    FROM checks
    WHERE domain = ?
    GROUP BY yymm
    ORDER BY yymm
David Morley's avatar
David Morley committed
27
";
28 29

try {
30
    $totals = R::getAll($sql, [$_domain]);
31
} catch (\RedBeanPHP\RedException $e) {
32
    die('Error in SQL query: ' . $e->getMessage());
33
}
David Morley's avatar
David Morley committed
34
?>
David Morley's avatar
David Morley committed
35
<div class="chart-container p-1 table-responsive" style="height:400px; width:700px">
36 37
    <canvas id="pod_chart_counts"></canvas>
</div>
David Morley's avatar
David Morley committed
38
<script>
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
    /**
     * Add a new chart for the passed data.
     *
     * @param id   HTML element ID to place the chart.
     * @param data Data to display on the chart.
     */
    new Chart(document.getElementById('pod_chart_counts'), {
        type: "line",
        data: {
            labels: <?php echo json_encode(array_column($totals, 'yymm')); ?>,
            datasets: [{
                data: <?php echo json_encode(array_column($totals, 'users')); ?>,
                label: 'Users',
                fill: false,
                yAxisID: "l2",
54 55
                borderColor: "#A07614",
                backgroundColor: "#A07614",
56 57 58 59 60 61 62
                borderWidth: 4,
                pointHoverRadius: 6
            }, {
                data: <?php echo json_encode(array_column($totals, 'local_posts')); ?>,
                label: 'Local Posts',
                fill: false,
                yAxisID: "l2",
63 64
                borderColor: "#4b6588",
                backgroundColor: "#4b6588",
65 66 67 68 69 70 71
                borderWidth: 4,
                pointHoverRadius: 6
            }, {
                data: <?php echo json_encode(array_column($totals, 'comment_counts')); ?>,
                label: 'Comments',
                fill: false,
                yAxisID: "l2",
72 73
                borderColor: "#cecaa7",
                backgroundColor: "#cecaa7",
74 75 76
                borderWidth: 4,
                pointHoverRadius: 6
            }]
David Morley's avatar
David Morley committed
77
        },
78 79 80 81 82 83 84 85 86
        options: {
            responsive: true,
            maintainAspectRatio: true,
            scales: {
                yAxes: [{
                    position: "left",
                    "id": "l2"
                }]
            }
David Morley's avatar
David Morley committed
87 88 89
        }
    });
</script>