SettingForm.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\Core\UI\Widget\Graphs\Settings;
  3. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\BaseForm;
  4. use ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\FormConstants;
  5. use \ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\Fields\Hidden;
  6. use \ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\Fields\Number;
  7. use \ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\Fields\Select2vueByValueOnly;
  8. use \ModulesGarden\ProxmoxAddon\Core\UI\Widget\Forms\Fields\ColorPicker;
  9. use \ModulesGarden\ProxmoxAddon\Core\UI\Widget\Graphs\EmptyGraph;
  10. use function ModulesGarden\ProxmoxAddon\Core\Helper\sl;
  11. /**
  12. * Description of SettingForm
  13. *
  14. * @author inbs
  15. */
  16. class SettingForm extends BaseForm
  17. {
  18. protected $id = 'settingForm';
  19. protected $name = 'settingForm';
  20. protected $title = 'settingForm';
  21. protected $providerClass = 'ModulesGarden\ProxmoxAddon\Core\UI\Widget\Graphs\Settings\SettingDataProvider';
  22. protected $configFields = [];
  23. public function initContent()
  24. {
  25. $this->setFormType(FormConstants::UPDATE);
  26. if ($this->configFields)
  27. {
  28. foreach ($this->configFields as $field)
  29. {
  30. $this->addField($field);
  31. }
  32. $this->loadDataToForm();
  33. return $this;
  34. }
  35. else
  36. {
  37. $field = new Hidden();
  38. $field->initIds('setting');
  39. $this->addField($field);
  40. $request = sl('request');
  41. $lang = sl('lang');
  42. $customParams = json_decode(html_entity_decode($request->get('customParams', "{}")));
  43. $defaultFilter = json_decode(html_entity_decode($request->get('defaultFilter', "{}")));
  44. if ($defaultFilter->type)
  45. {
  46. switch ($defaultFilter->type)
  47. {
  48. case EmptyGraph::GRAPH_FILTER_TYPE_INT:
  49. $startFilter = new Number();
  50. $startFilter->initIds('start')->setDefaultValue($defaultFilter->default->start);
  51. $endFilter = new Number();
  52. $endFilter->initIds('end')->setDefaultValue($defaultFilter->default->end);
  53. $this->addField($startFilter);
  54. $this->addField($endFilter);
  55. break;
  56. case EmptyGraph::GRAPH_FILTER_TYPE_STRING:
  57. case EmptyGraph::GRAPH_FILTER_TYPE_DATE:
  58. $startFilter = new Select2vueByValueOnly('start');
  59. $startFilter->setDefaultValue($defaultFilter->default->start);
  60. $endFilter = new Select2vueByValueOnly('end');
  61. $endFilter->setDefaultValue($defaultFilter->default->end);
  62. if ($customParams->labels)
  63. {
  64. $startFilter->setAvailableValues($customParams->labels);
  65. $endFilter->setAvailableValues($customParams->labels);
  66. }
  67. $this->addField($startFilter);
  68. $this->addField($endFilter);
  69. break;
  70. }
  71. }
  72. if ($customParams->labels && $defaultFilter->displayEditColor)
  73. {
  74. foreach ($customParams->labels as $label)
  75. {
  76. $colorPicker = new ColorPicker($label);
  77. $colorPicker->setRawTitle(str_replace(':labelName:', $label, $lang->T('labelColor')));
  78. $this->addField($colorPicker);
  79. }
  80. }
  81. $this->loadDataToForm();
  82. }
  83. }
  84. public function setConfigFields($fieldsList = [])
  85. {
  86. if ($fieldsList)
  87. {
  88. $this->configFields = $fieldsList;
  89. }
  90. return $this;
  91. }
  92. }