Completed
Push — master ( c47aad...d826fe )
by Klochok
05:21
created

ResourceConsumption::init()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 32
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 32
ccs 0
cts 28
cp 0
rs 8.8571
cc 3
eloc 23
nc 3
nop 0
crap 12
1
<?php
2
3
namespace hipanel\modules\server\widgets;
4
5
use dosamigos\chartjs\ChartJs;
6
use Yii;
7
use yii\helpers\Html;
8
9
class ResourceConsumption extends TrafficConsumption
10
{
11
    public static function types()
12
    {
13
        return [
14
            'ip_num' => Yii::t('hipanel:server', 'Number of IP addresses'),
15
            'server_du' => Yii::t('hipanel:server', 'CDN disk usage'),
16
            'server_files' => Yii::t('hipanel:server', 'CDN files count'),
17
            'backup_du' => Yii::t('hipanel:server', 'Backup disk usage'),
18
            'backup_traf' => Yii::t('hipanel:server', 'Backup traffic'),
19
            'server_sata' => Yii::t('hipanel:server', 'CDN cache SATA'),
20
            'server_ssd' => Yii::t('hipanel:server', 'CDN cache SSD'),
21
        ];
22
    }
23
24
    public function init()
25
    {
26
        foreach ($this->data as $k => $item) {
27
            if (in_array($k, ['server_du', 'server_files', 'backup_du', 'backup_traf', 'server_sata', 'server_ssd'])) {
28
                $this->data[$k] = array_map(function ($n) {
29
                    return (int)Yii::$app->formatter->asShortSize($n, 2);
30
                }, $item);
31
            }
32
        }
33
34
        parent::init();
35
36
        $this->emptyMessage = array_merge($this->emptyMessage, [
37
            'ip_num' => Yii::t('hipanel:server', 'IP number history is not available for this server.'),
38
            'server_du' => Yii::t('hipanel:server', 'Server usage consumption history is not available for this server.'),
39
            'server_files' => Yii::t('hipanel:server', 'Server files consumption history is not available for this server.'),
40
            'backup_du' => Yii::t('hipanel:server', 'Backup disk usage consumption history is not available for this server.'),
41
            'backup_traf' => Yii::t('hipanel:server', ' consumption history is not available for this server.'),
42
            'server_sata' => Yii::t('hipanel:server', ' consumption history is not available for this server.'),
43
            'server_ssd' => Yii::t('hipanel:server', ' consumption history is not available for this server.'),
44
        ]);
45
46
        $this->legends = array_merge($this->legends, [
47
            'ip_num' => Yii::t('hipanel:server', 'Total of IP, PC'),
48
            'server_du' => Yii::t('hipanel:server', 'Total incoming traffic, Gb'),
49
            'server_files' => Yii::t('hipanel:server', 'Server files, Gb'),
50
            'backup_du' => Yii::t('hipanel:server', 'Backup disk usage, Gb'),
51
            'backup_traf' => Yii::t('hipanel:server', 'Buckup traffic, Gb'),
52
            'server_sata' => Yii::t('hipanel:server', 'Server SATA, Gb'),
53
            'server_ssd' => Yii::t('hipanel:server', 'Server SSD, Gb'),
54
        ]);
55
    }
56
57
    protected function renderCanvasData()
58
    {
59
        return Html::tag('div', ChartJs::widget([
60
            'id' => $this->id,
61
            'type' => $this->chartType,
62
            'data' => [
63
                'labels' => $this->labels,
64
                'datasets' => [
65
                    [
66
                        'label' => $this->legends[$this->consumptionBase],
67
                        'backgroundColor' => 'rgba(139, 195, 74, 0.5)',
68
                        'borderColor' => 'rgba(139, 195, 74, 1)',
69
                        'pointBackgroundColor' => 'rgba(139, 195, 74, 1)',
70
                        'pointBorderColor' => '#fff',
71
                        'data' => (array)$this->data[$this->consumptionBase],
72
                    ],
73
                ],
74
            ],
75
            'clientOptions' => [
76
                'bezierCurve' => false,
77
                'responsive' => true,
78
                'maintainAspectRatio' => true,
79
            ],
80
        ]));
81
    }
82
}
83