CloudInitScriptDataTable.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\App\UI\CloudInitScript\Pages;
  3. use ModulesGarden\ProxmoxAddon\App\Models\CloudInitScript;
  4. use ModulesGarden\ProxmoxAddon\App\UI\CloudInitScript\Buttons\DeleteButton;
  5. use ModulesGarden\ProxmoxAddon\App\UI\CloudInitScript\Buttons\DeleteMassButton;
  6. use ModulesGarden\ProxmoxAddon\App\UI\CloudInitScript\Buttons\UpdateButton;
  7. use ModulesGarden\ProxmoxAddon\Core\Helper\BuildUrl;
  8. use ModulesGarden\ProxmoxAddon\Core\UI\Interfaces\AdminArea;
  9. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\Buttons\ButtonRedirect;
  10. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\Column;
  11. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\DataProviders\Providers\QueryDataProvider;
  12. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\DataTable\DataTable;
  13. class CloudInitScriptDataTable extends DataTable implements AdminArea
  14. {
  15. public function initContent()
  16. {
  17. //create
  18. $buttonRedirect = new ButtonRedirect('create');
  19. $buttonRedirect->setShowTitle();
  20. $buttonRedirect->setRawUrl(BuildUrl::getUrl('CloudInitScript', 'create'));
  21. $buttonRedirect->setIcon('lu-icon-in-button lu-zmdi lu-zmdi-plus');
  22. $buttonRedirect->replaceClasses(['lu-btn lu-btn--primary']);
  23. $buttonRedirect->deleteHtmlAttribute('data-toggle');
  24. $this->addButton($buttonRedirect);
  25. //update
  26. $this->addActionButton(new UpdateButton());
  27. //delete
  28. $this->addActionButton(new DeleteButton());
  29. //mass delete
  30. $this->addMassActionButton(new DeleteMassButton());
  31. }
  32. protected function loadHtml()
  33. {
  34. $this->addColumn((new Column('id'))->setSearchable(true)->setOrderable('DESC'))
  35. ->addColumn((new Column('name'))->setSearchable(true, Column::TYPE_STRING));
  36. }
  37. protected function loadData()
  38. {
  39. $query = (new CloudInitScript())
  40. ->query()
  41. ->getQuery()
  42. ->select("id", "name");
  43. $dataProv = new QueryDataProvider();
  44. $dataProv->setDefaultSorting("id", 'DESC');
  45. $dataProv->setData($query);
  46. $this->setDataProvider($dataProv);
  47. }
  48. }