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\Servers\ProxmoxVps\App\UI\Network\Pages; use ModulesGarden\ProxmoxAddon\App\Services\ApiService; use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService; use ModulesGarden\Servers\ProxmoxVps\App\UI\Network\Buttons\CreateButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Network\Buttons\DeleteButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Network\Buttons\DeleteMassButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Network\Buttons\InfoButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Network\Buttons\MailtoSwitchButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Network\Buttons\RestoreButton; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\Column; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\DataTable; use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl; class NetworkLxcDataTable extends DataTable implements ClientArea { use ProductService; use ApiService; protected $id = 'networkLxcDataTable'; protected $title = 'networkLxcDataTable'; public function initContent() { $createButton = new CreateButton(); $createButton->addClass("pmCreateButton"); if (!$this->configuration()->getPrivateBridge() || $this->vm()->getNetworkDevices($this->configuration()->getPrivateBridge())) { $createButton->addClass("hidden"); } //Create $this->addButton($createButton); //Info $this->addActionButton(new InfoButton()); //Delete $this->addActionButton(new DeleteButton()); } protected function loadHtml() { $this->addColumn((new Column('id'))->setSearchable(true, "string")->setOrderable('ASC')) ->addColumn((new Column('name'))->setSearchable(true)->setOrderable()) ->addColumn((new Column('firewall'))->setSearchable(true)->setOrderable()) ->addColumn((new Column('hwaddr'))->setSearchable(true)->setOrderable()) ->addColumn((new Column('ip'))->setSearchable(true)->setOrderable()) ->addColumn((new Column('gw'))->setSearchable(true)->setOrderable()) ->addColumn((new Column('rate'))->setSearchable(true)->setOrderable()); } public function replaceFieldFirewall($key, $row) { if ($row['firewall']) { return '' . sl('lang')->tr("Active") . ''; } return '' . sl('lang')->tr("Disabled") . ''; } public function replaceFieldIp($key, $row) { if (!$row['ip'] && !$row['ip6']) { return '-'; } $ip = []; if ($row['ip'] && $row['cidr']) { $ip[] = sprintf("%s/%s", $row['ip'], $row['cidr']); } else { if ($row['ip']) { $ip[] = $row['ip']; } } if ($row['ip6'] && $row['cidr6']) { $ip[] = sprintf("%s/%s", $row['ip6'], $row['cidr6']); } else { if ($row['ip6']) { $ip[] = $row['ip6']; } } return implode("
", $ip); } public function replaceFieldGw($key, $row) { if ($row['gw'] && $row['gw6']) { return sprintf('%s
%s', $row['gw'], $row['gw6']); } if ($row['gw']) { return $row['gw']; } if ($row['gw6']) { return $row['gw6']; } return "-"; } public function replaceFieldTag($key, $row) { if ($row['tag']) { return $row['tag']; } return '-'; } public function replaceFieldRate($key, $row) { if (isset($row['rate'])) { return sprintf('%s MB/s %s (Mbps)', $row['rate'], $row['rate'] * 8); } return sl('lang')->abtr("Unlimited"); } protected function loadData() { $data = []; foreach ($this->vm()->getNetworkDevices() as $nd) { $data[] = $nd->getAttributes(); } $dataProv = new ArrayDataProvider(); $dataProv->setDefaultSorting("id", 'ASC'); $dataProv->setData($data); $this->setDataProvider($dataProv); } }