. **/ namespace Widgets\ItemNavigator\Includes; use Zabbix\Widgets\{ CWidgetField, CWidgetForm }; use Zabbix\Widgets\Fields\{ CWidgetFieldIntegerBox, CWidgetFieldMultiSelectGroup, CWidgetFieldMultiSelectHost, CWidgetFieldMultiSelectOverrideHost, CWidgetFieldPatternSelectItem, CWidgetFieldRadioButtonList, CWidgetFieldTags }; /** * Item navigator widget form. */ class WidgetForm extends CWidgetForm { public const STATE_ALL = -1; public const STATE_NORMAL = 0; public const STATE_NOT_SUPPORTED = 1; public const PROBLEMS_ALL = 0; public const PROBLEMS_UNSUPPRESSED = 1; public const PROBLEMS_NONE = 2; private const LINES_MIN = 1; private const LINES_MAX = 9999; private const LINES_DEFAULT = 100; public function addFields(): self { return $this ->addField($this->isTemplateDashboard() ? null : new CWidgetFieldMultiSelectGroup('groupids', _('Host groups')) ) ->addField($this->isTemplateDashboard() ? null : new CWidgetFieldMultiSelectHost('hostids', _('Hosts')) ) ->addField($this->isTemplateDashboard() ? null : (new CWidgetFieldRadioButtonList('host_tags_evaltype', _('Host tags'), [ TAG_EVAL_TYPE_AND_OR => _('And/Or'), TAG_EVAL_TYPE_OR => _('Or') ]))->setDefault(TAG_EVAL_TYPE_AND_OR) ) ->addField($this->isTemplateDashboard() ? null : new CWidgetFieldTags('host_tags') ) ->addField( new CWidgetFieldPatternSelectItem('items', _('Item patterns')) ) ->addField( (new CWidgetFieldRadioButtonList('item_tags_evaltype', _('Item tags'), [ TAG_EVAL_TYPE_AND_OR => _('And/Or'), TAG_EVAL_TYPE_OR => _('Or') ]))->setDefault(TAG_EVAL_TYPE_AND_OR) ) ->addField( new CWidgetFieldTags('item_tags') ) ->addField( (new CWidgetFieldRadioButtonList('state', _('State'), [ self::STATE_ALL => _('All'), self::STATE_NORMAL => _('Normal'), self::STATE_NOT_SUPPORTED => _('Not supported') ]))->setDefault(self::STATE_ALL) ) ->addField( (new CWidgetFieldRadioButtonList('problems', _('Show problems'), [ self::PROBLEMS_ALL => _('All'), self::PROBLEMS_UNSUPPRESSED => _('Unsuppressed'), self::PROBLEMS_NONE => _('None') ]))->setDefault(self::PROBLEMS_UNSUPPRESSED) ) ->addField( new CWidgetFieldItemGrouping('group_by', _('Group by')) ) ->addField( (new CWidgetFieldIntegerBox('show_lines', _('Item limit'), self::LINES_MIN, self::LINES_MAX)) ->setDefault(self::LINES_DEFAULT) ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK) ) ->addField( new CWidgetFieldMultiSelectOverrideHost() ); } }