http://modulesgarden.com * CONTACT -> contact@modulesgarden.com * * * This software is furnished under a license and may be used and copied * only in accordance with the terms of such license and with the * inclusion of the above copyright notice. This software or any other * copies thereof may not be provided or otherwise made available to any * other person. No title to and ownership of the software is hereby * transferred. * * * ******************************************************************** */ namespace ModulesGarden\ProxmoxAddon\App\UI\NodeDetail\Pages; use ModulesGarden\ProxmoxAddon as main; use ModulesGarden\ProxmoxAddon\Core\UI\Interfaces\AdminArea; use ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\Fields\Select; use ModulesGarden\ProxmoxAddon\Core\UI\Widget\Graphs\Line; use ModulesGarden\ProxmoxAddon\Core\UI\Widget\Graphs\Models\DataSet; class CpuGraph extends Line implements AdminArea { use LoadAPIData; protected $id = 'cpuGraph'; protected $name = 'cpuGraph'; protected $graphSettingsEnabled = true; protected $graphSettingsKey = 'cpuGraphSettings'; public function initContent() { $selectScope = new Select('timeframe'); $selectScope->setAvailableValues([ 'hour' => 'Hour', 'day' => 'Day', 'week' => 'Week', 'year' => 'Year', ]); $selectScope->setDefaultValue('week'); $this->addSettingField($selectScope); //yAxes $this->updateChartScale('yAxes', [ [ 'scaleLabel' => [ 'display' => true, 'labelString' => '%' ], 'ticks' => [ 'beginAtZero' => true ], ]]); //Tooltip $this->updateChartOption('tooltips', [ 'callbacks' => [ 'label' => 'mgTooltipCpu' ] ]); } public function prepareAjaxData() { if ($this->configChartsSettings->timeframe) { $this->timeframe = $this->configChartsSettings->timeframe; } $rrdata = main\Core\Helper\DatabaseCache::loadData( $this->graphSettingsKey .$this->timeframe. '_cacheData', [$this, 'loadApiData'], 30, true); $labels = []; $dataSets = [ 'cpu' => [], 'iowait' => [], ]; $dateFormat = in_array($this->timeframe, ['hour', 'day']) ? "H:i:s" : "Y-m-d"; foreach ($rrdata as $rrd) { $labels[] = date($dateFormat, $rrd['time']); $dataSets['cpu'][] = (float)$rrd['cpu'] * 100; $dataSets['iowait'][] = (float)$rrd['iowait'] * 100; } //Labels $this->setLabels($labels); //CPU Usage $lang = main\Core\ServiceLocator::call('lang'); $dataSet = new DataSet(); $dataSet->setTitle($lang->absoluteT('CPU Usage')) ->setData($dataSets['cpu']) ->setConfigurationDataSet([ "backgroundColor" => "rgba(174, 198, 57, 0.79)", "borderColor" => "rgba(174, 198, 57, 1)" ]); $this->addDataSet($dataSet); //IO Delay $dataSet = new DataSet(); $dataSet->setTitle($lang->absoluteT('IO Delay')) ->setData($dataSets['iowait']) ->setConfigurationDataSet([ "backgroundColor" => 'rgba(39, 133, 134, 0.91)', "borderColor" => 'rgba(39, 133, 134, 1)', ]); $this->addDataSet($dataSet); } }