<?php declare(strict_types = 0);
namespace Widgets\SvgGraph\Includes;
use Zabbix\Widgets\CWidgetField;
class CWidgetFieldOverride extends CWidgetField {
public const DEFAULT_VIEW = CWidgetFieldOverrideView::class;
public const DEFAULT_VALUE = [];
public function __construct(string $name, ?string $label = null) {
parent::__construct($name, $label);
->setDefault(self::DEFAULT_VALUE)
->setValidationRules(['type' => API_OBJECTS, 'fields' => [
'hosts' => ['type' => API_STRINGS_UTF8, 'flags' => API_REQUIRED],
'items' => ['type' => API_STRINGS_UTF8, 'flags' => API_REQUIRED],
'color' => ['type' => API_COLOR],
'color_palette' => ['type' => API_INT32],
'type' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_TYPE_LINE, SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_STAIRCASE, SVG_GRAPH_TYPE_BAR])],
'width' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
'pointsize' => ['type' => API_INT32, 'in' => implode(',', range(1, 10))],
'transparency' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
'fill' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
'missingdatafunc' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_MISSING_DATA_NONE, SVG_GRAPH_MISSING_DATA_CONNECTED, SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO, SVG_GRAPH_MISSING_DATA_LAST_KNOWN])],
'axisy' => ['type' => API_INT32, 'in' => implode(',', [GRAPH_YAXIS_SIDE_LEFT, GRAPH_YAXIS_SIDE_RIGHT])],
'timeshift' => ['type' => API_TIME_UNIT, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])]
public function getOverrideOptions(): array {
return ['color', 'color_palette', 'width', 'type', 'transparency', 'fill', 'pointsize', 'missingdatafunc', 'axisy', 'timeshift'];
public function setValue($value): self {
foreach ((array) $value as $override) {
$overrides[] = $override + self::getDefaults();
return parent::setValue($overrides);