-
Notifications
You must be signed in to change notification settings - Fork 110
/
chart.php
51 lines (45 loc) · 1.44 KB
/
chart.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/* @var $panel TrailPanel */
use bedezign\yii2\audit\models\AuditTrail;
use bedezign\yii2\audit\panels\TrailPanel;
use dosamigos\chartjs\ChartJs;
//initialise defaults (0 entries) for each day
$defaults = [];
$startDate = strtotime('-6 days');
foreach (range(-6, 0) as $day) {
$defaults[date('D: Y-m-d', strtotime($day . 'days'))] = 0;
}
$results = AuditTrail::find()
->select(["COUNT(DISTINCT id) as count", "created AS day"])
->where(['between', 'created',
date('Y-m-d 00:00:00', $startDate),
date('Y-m-d 23:59:59')])
->groupBy("created")->indexBy('day')->column();
// format dates properly
$formattedData = [];
foreach ($results as $date => $count) {
$date = date('D: Y-m-d', strtotime($date));
$formattedData[$date] = $count;
}
$results = $formattedData;
// replace defaults with data from db where available
$results = array_merge($defaults, $results);
echo ChartJs::widget([
'type' => 'bar',
'clientOptions' => [
'legend' => ['display' => false],
'tooltips' => ['enabled' => false],
],
'data' => [
'labels' => array_keys($chartData),
'datasets' => [
[
'fillColor' => 'rgba(151,187,205,0.5)',
'strokeColor' => 'rgba(151,187,205,1)',
'pointColor' => 'rgba(151,187,205,1)',
'pointStrokeColor' => '#fff',
'data' => array_values($chartData),
],
],
]
]);