Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php')
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php635
1 files changed, 0 insertions, 635 deletions
diff --git a/ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php b/ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php
deleted file mode 100644
index ca4f60adc92..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php
+++ /dev/null
@@ -1,635 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetFormSvgGraph extends CWidgetForm {
-
- private const WIDGET_ITEM_PERCENTILE_MIN = 1;
- private const WIDGET_ITEM_PERCENTILE_MAX = 100;
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_SVG_GRAPH);
-
- $this->data = self::convertDottedKeys($this->data);
-
- $this->initDataSetFields();
- $this->initDisplayingOptionsFields();
- $this->initTimePeriodFields();
- $this->initAxesFields();
- $this->initLegendFields();
- $this->initProblemsFields();
- $this->initOverridesFields();
- }
-
- /**
- * Validate form fields.
- *
- * @param bool $strict Enables more strict validation of the form fields.
- * Must be enabled for validation of input parameters in the widget configuration form.
- *
- * @throws Exception
- *
- * @return array
- */
- public function validate($strict = false): array {
- $errors = parent::validate($strict);
-
- $number_parser_w_suffix = new CNumberParser(['with_size_suffix' => true, 'with_time_suffix' => true]);
- $number_parser_wo_suffix = new CNumberParser();
-
- // Percentiles
- if ($this->fields['percentile_left']->getValue() == SVG_GRAPH_PERCENTILE_LEFT_ON) {
- $percentile_left_value = $this->fields['percentile_left_value']->getValue();
-
- if ($percentile_left_value !== '') {
- $percentile_left_value_calculated =
- $number_parser_wo_suffix->parse($percentile_left_value) == CParser::PARSE_SUCCESS
- ? $number_parser_wo_suffix->calcValue()
- : null;
-
- if ($percentile_left_value_calculated === null
- || $percentile_left_value_calculated < self::WIDGET_ITEM_PERCENTILE_MIN
- || $percentile_left_value_calculated > self::WIDGET_ITEM_PERCENTILE_MAX) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Percentile line (left)'),
- _s('value must be between "%1$s" and "%2$s"', self::WIDGET_ITEM_PERCENTILE_MIN,
- self::WIDGET_ITEM_PERCENTILE_MAX
- )
- );
- }
- }
- }
-
- if ($this->fields['percentile_right']->getValue() == SVG_GRAPH_PERCENTILE_RIGHT_ON) {
- $percentile_right_value = $this->fields['percentile_right_value']->getValue();
-
- if ($percentile_right_value !== '') {
- $percentile_right_value_calculated =
- $number_parser_wo_suffix->parse($percentile_right_value) == CParser::PARSE_SUCCESS
- ? $number_parser_wo_suffix->calcValue()
- : null;
-
- if ($percentile_right_value_calculated === null
- || $percentile_right_value_calculated < self::WIDGET_ITEM_PERCENTILE_MIN
- || $percentile_right_value_calculated > self::WIDGET_ITEM_PERCENTILE_MAX) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Percentile line (right)'),
- _s('value must be between "%1$s" and "%2$s"', self::WIDGET_ITEM_PERCENTILE_MIN,
- self::WIDGET_ITEM_PERCENTILE_MAX
- )
- );
- }
- }
- }
-
- // Test graph custom time period.
- if ($this->fields['graph_time']->getValue() == SVG_GRAPH_CUSTOM_TIME) {
- $errors = array_merge($errors, self::validateTimeSelectorPeriod($this->fields['time_from']->getValue(),
- $this->fields['time_to']->getValue()
- ));
- }
-
- // Validate Min/Max values in Axes tab.
- if ($this->fields['lefty']->getValue() == SVG_GRAPH_AXIS_SHOW) {
- $lefty_min =
- $number_parser_w_suffix->parse($this->fields['lefty_min']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- $lefty_max =
- $number_parser_w_suffix->parse($this->fields['lefty_max']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- if ($lefty_min !== '' && $lefty_max !== '' && $lefty_min >= $lefty_max) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Left Y').'/'._('Max'),
- _('Y axis MAX value must be greater than Y axis MIN value')
- );
- }
- }
-
- if ($this->fields['righty']->getValue() == SVG_GRAPH_AXIS_SHOW) {
- $righty_min =
- $number_parser_w_suffix->parse($this->fields['righty_min']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- $righty_max =
- $number_parser_w_suffix->parse($this->fields['righty_max']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- if ($righty_min !== '' && $righty_max !== '' && $righty_min >= $righty_max) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Right Y').'/'._('Max'),
- _('Y axis MAX value must be greater than Y axis MIN value')
- );
- }
- }
-
- return $errors;
- }
-
- /**
- * Check if widget configuration is set to use overridden time.
- *
- * @param array $fields Widget configuration fields.
- *
- * @return bool
- */
- public static function hasOverrideTime(array $fields): bool {
- return array_key_exists('graph_time', $fields) && $fields['graph_time'] == SVG_GRAPH_CUSTOM_TIME;
- }
-
- private function initDataSetFields(): void {
- $field_ds = (new CWidgetFieldGraphDataSet('ds', _('Data set')))->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if (array_key_exists('ds', $this->data)) {
- $field_ds->setValue($this->data['ds']);
- }
-
- $this->fields[$field_ds->getName()] = $field_ds;
- }
-
- private function initDisplayingOptionsFields(): void {
- // History data selection.
- $field_data_source = (new CWidgetFieldRadioButtonList('source', _('History data selection'), [
- SVG_GRAPH_DATA_SOURCE_AUTO => _x('Auto', 'history source selection method'),
- SVG_GRAPH_DATA_SOURCE_HISTORY => _('History'),
- SVG_GRAPH_DATA_SOURCE_TRENDS => _('Trends')
- ]))
- ->setDefault(SVG_GRAPH_DATA_SOURCE_AUTO)
- ->setModern(true);
-
- if (array_key_exists('source', $this->data)) {
- $field_data_source->setValue($this->data['source']);
- }
-
- $this->fields[$field_data_source->getName()] = $field_data_source;
-
- // Simple triggers.
- $field_simple_triggers = new CWidgetFieldCheckBox('simple_triggers', _('Simple triggers'));
-
- if (array_key_exists('simple_triggers', $this->data)) {
- $field_simple_triggers->setValue($this->data['simple_triggers']);
- }
-
- $this->fields[$field_simple_triggers->getName()] = $field_simple_triggers;
-
- // Working time.
- $field_working_time = new CWidgetFieldCheckBox('working_time', _('Working time'));
-
- if (array_key_exists('working_time', $this->data)) {
- $field_working_time->setValue($this->data['working_time']);
- }
-
- $this->fields[$field_working_time->getName()] = $field_working_time;
-
- // Percentile line left.
- $field_percentile_left = new CWidgetFieldCheckBox('percentile_left', _('Percentile line (left)'));
-
- if (array_key_exists('percentile_left', $this->data)) {
- $field_percentile_left->setValue($this->data['percentile_left']);
- }
-
- $this->fields[$field_percentile_left->getName()] = $field_percentile_left;
-
- // Percentile line left value.
- $field_percentile_left_value = (new CWidgetFieldTextBox('percentile_left_value', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_percentile_left->getValue() != SVG_GRAPH_PERCENTILE_LEFT_ON) {
- $field_percentile_left_value->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('percentile_left_value', $this->data)) {
- $field_percentile_left_value->setValue($this->data['percentile_left_value']);
- }
-
- $this->fields[$field_percentile_left_value->getName()] = $field_percentile_left_value;
-
- // Percentile line right.
- $field_percentile_right = new CWidgetFieldCheckBox('percentile_right', _('Percentile line (right)'));
-
- if (array_key_exists('percentile_right', $this->data)) {
- $field_percentile_right->setValue($this->data['percentile_right']);
- }
-
- $this->fields[$field_percentile_right->getName()] = $field_percentile_right;
-
- // Percentile line right value.
- $field_percentile_right_value = (new CWidgetFieldTextBox('percentile_right_value', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_percentile_right->getValue() != SVG_GRAPH_PERCENTILE_RIGHT_ON) {
- $field_percentile_right_value->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('percentile_right_value', $this->data)) {
- $field_percentile_right_value->setValue($this->data['percentile_right_value']);
- }
-
- $this->fields[$field_percentile_right_value->getName()] = $field_percentile_right_value;
- }
-
- private function initTimePeriodFields(): void {
- // Checkbox to specify either relative dashboard time or widget's own time.
- $field_graph_time = new CWidgetFieldCheckBox('graph_time', _('Set custom time period'));
-
- if (array_key_exists('graph_time', $this->data)) {
- $field_graph_time->setValue($this->data['graph_time']);
- }
-
- $this->fields[$field_graph_time->getName()] = $field_graph_time;
-
- // Date from.
- $field_time_from = (new CWidgetFieldDatePicker('time_from', _('From'), false))
- ->setDefault('now-1h')
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if ($field_graph_time->getValue() != SVG_GRAPH_CUSTOM_TIME) {
- $field_time_from->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('time_from', $this->data)) {
- $field_time_from->setValue($this->data['time_from']);
- }
-
- $this->fields[$field_time_from->getName()] = $field_time_from;
-
- // Time to.
- $field_time_to = (new CWidgetFieldDatePicker('time_to', _('To'), false))
- ->setDefault('now')
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if ($field_graph_time->getValue() != SVG_GRAPH_CUSTOM_TIME) {
- $field_time_to->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('time_to', $this->data)) {
- $field_time_to->setValue($this->data['time_to']);
- }
-
- $this->fields[$field_time_to->getName()] = $field_time_to;
- }
-
- private function initAxesFields(): void {
- // Show left Y axis.
- $field_lefty = (new CWidgetFieldCheckBox('lefty', _('Left Y'), _('Show')))->setDefault(SVG_GRAPH_AXIS_SHOW);
-
- if (array_key_exists('lefty', $this->data)) {
- $field_lefty->setValue($this->data['lefty']);
- }
-
- $this->fields[$field_lefty->getName()] = $field_lefty;
-
- // Min value on left Y axis.
- $field_lefty_min = (new CWidgetFieldNumericBox('lefty_min', _('Min')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Left Y').'/'._('Min'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_lefty_min->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_min', $this->data)) {
- $field_lefty_min->setValue($this->data['lefty_min']);
- }
-
- $this->fields[$field_lefty_min->getName()] = $field_lefty_min;
-
- // Max value on left Y axis.
- $field_lefty_max = (new CWidgetFieldNumericBox('lefty_max', _('Max')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Left Y').'/'._('Max'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_lefty_max->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_max', $this->data)) {
- $field_lefty_max->setValue($this->data['lefty_max']);
- }
-
- $this->fields[$field_lefty_max->getName()] = $field_lefty_max;
-
- // Specify the type of units on left Y axis.
- $field_lefty_units = (new CWidgetFieldSelect('lefty_units', _('Units'), [
- SVG_GRAPH_AXIS_UNITS_AUTO => _x('Auto', 'history source selection method'),
- SVG_GRAPH_AXIS_UNITS_STATIC => _x('Static', 'history source selection method')
- ]))->setDefault(SVG_GRAPH_AXIS_UNITS_AUTO);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_lefty_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_units', $this->data)) {
- $field_lefty_units->setValue($this->data['lefty_units']);
- }
-
- $this->fields[$field_lefty_units->getName()] = $field_lefty_units;
-
- // Static units on left Y axis.
- $field_lefty_static_units = (new CWidgetFieldTextBox('lefty_static_units', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW
- || $field_lefty_units->getValue() != SVG_GRAPH_AXIS_UNITS_STATIC) {
- $field_lefty_static_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_static_units', $this->data)) {
- $field_lefty_static_units->setValue($this->data['lefty_static_units']);
- }
-
- $this->fields[$field_lefty_static_units->getName()] = $field_lefty_static_units;
-
- // Show right Y axis.
- $field_righty = (new CWidgetFieldCheckBox('righty', _('Right Y'), _('Show')))->setDefault(SVG_GRAPH_AXIS_SHOW);
-
- if (array_key_exists('righty', $this->data)) {
- $field_righty->setValue($this->data['righty']);
- }
-
- $this->fields[$field_righty->getName()] = $field_righty;
-
- // Min value on right Y axis.
- $field_righty_min = (new CWidgetFieldNumericBox('righty_min', _('Min')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Right Y').'/'._('Min'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_righty_min->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_min', $this->data)) {
- $field_righty_min->setValue($this->data['righty_min']);
- }
-
- $this->fields[$field_righty_min->getName()] = $field_righty_min;
-
- // Max value on right Y axis.
- $field_righty_max = (new CWidgetFieldNumericBox('righty_max', _('Max')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Right Y').'/'._('Max'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_righty_max->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_max', $this->data)) {
- $field_righty_max->setValue($this->data['righty_max']);
- }
-
- $this->fields[$field_righty_max->getName()] = $field_righty_max;
-
- // Specify the type of units on right Y axis.
- $field_righty_units = (new CWidgetFieldSelect('righty_units', _('Units'), [
- SVG_GRAPH_AXIS_UNITS_AUTO => _x('Auto', 'history source selection method'),
- SVG_GRAPH_AXIS_UNITS_STATIC => _x('Static', 'history source selection method')
- ]))->setDefault(SVG_GRAPH_AXIS_UNITS_AUTO);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_righty_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_units', $this->data)) {
- $field_righty_units->setValue($this->data['righty_units']);
- }
-
- $this->fields[$field_righty_units->getName()] = $field_righty_units;
-
- // Static units on right Y axis.
- $field_righty_static_units = (new CWidgetFieldTextBox('righty_static_units', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW
- || $field_righty_units->getValue() != SVG_GRAPH_AXIS_UNITS_STATIC) {
- $field_righty_static_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_static_units', $this->data)) {
- $field_righty_static_units->setValue($this->data['righty_static_units']);
- }
-
- $this->fields[$field_righty_static_units->getName()] = $field_righty_static_units;
-
- // Show X axis.
- $field_axisx = (new CWidgetFieldCheckBox('axisx', _('X-Axis'), _('Show')))->setDefault(SVG_GRAPH_AXIS_SHOW);
-
- if (array_key_exists('axisx', $this->data)) {
- $field_axisx->setValue($this->data['axisx']);
- }
-
- $this->fields[$field_axisx->getName()] = $field_axisx;
- }
-
- private function initLegendFields(): void {
- /**
- * Legend tab.
- *
- * Contains check-box field to show/hide legend and field to specify number of lines in which legend is shown.
- */
-
- $field_legend = (new CWidgetFieldCheckBox('legend', _('Show legend')))->setDefault(SVG_GRAPH_LEGEND_ON);
-
- if (array_key_exists('legend', $this->data)) {
- $field_legend->setValue($this->data['legend']);
- }
-
- $this->fields[$field_legend->getName()] = $field_legend;
-
- // Show legend statistic.
- $field_legend_statistic = (new CWidgetFieldCheckBox('legend_statistic', _('Display min/max/avg')))
- ->setDefault(SVG_GRAPH_LEGEND_STATISTIC_OFF);
-
- if ($field_legend->getValue() == SVG_GRAPH_LEGEND_OFF) {
- $field_legend_statistic->setFlags(CWidgetField::FLAG_DISABLED);
- }
- if (array_key_exists('legend_statistic', $this->data)) {
- $field_legend_statistic->setValue($this->data['legend_statistic']);
- }
-
- $this->fields[$field_legend_statistic->getName()] = $field_legend_statistic;
-
- // Number of lines.
- $field_legend_lines = (new CWidgetFieldRangeControl('legend_lines', _('Number of rows'),
- SVG_GRAPH_LEGEND_LINES_MIN, SVG_GRAPH_LEGEND_LINES_MAX
- ))->setDefault(SVG_GRAPH_LEGEND_LINES_MIN);
-
- if ($field_legend->getValue() == SVG_GRAPH_LEGEND_OFF) {
- $field_legend_lines->setFlags(CWidgetField::FLAG_DISABLED);
- }
- if (array_key_exists('legend_lines', $this->data)) {
- $field_legend_lines->setValue($this->data['legend_lines']);
- }
-
- $this->fields[$field_legend_lines->getName()] = $field_legend_lines;
-
- // Number of columns.
- $field_legend_columns = (new CWidgetFieldRangeControl('legend_columns', _('Number of columns'),
- SVG_GRAPH_LEGEND_COLUMNS_MIN, SVG_GRAPH_LEGEND_COLUMNS_MAX
- ))->setDefault(SVG_GRAPH_LEGEND_COLUMNS_MAX);
-
- if ($field_legend_statistic->getValue() == SVG_GRAPH_LEGEND_STATISTIC_ON) {
- $field_legend_columns->setFlags(CWidgetField::FLAG_DISABLED);
- }
- if (array_key_exists('legend_columns', $this->data)) {
- $field_legend_columns->setValue($this->data['legend_columns']);
- }
-
- $this->fields[$field_legend_columns->getName()] = $field_legend_columns;
- }
-
- private function initProblemsFields(): void {
- // Checkbox: Selected items only.
- $field_show_problems = new CWidgetFieldCheckBox('show_problems', _('Show problems'));
-
- if (array_key_exists('show_problems', $this->data)) {
- $field_show_problems->setValue($this->data['show_problems']);
- }
-
- $this->fields[$field_show_problems->getName()] = $field_show_problems;
-
- // Checkbox: Selected items only.
- $field_problems = (new CWidgetFieldCheckBox('graph_item_problems', _('Selected items only')))
- ->setDefault(SVG_GRAPH_SELECTED_ITEM_PROBLEMS);
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_problems->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('graph_item_problems', $this->data)) {
- $field_problems->setValue($this->data['graph_item_problems']);
- }
-
- $this->fields[$field_problems->getName()] = $field_problems;
-
- // Problem hosts.
- $field_problemhosts = (new CWidgetFieldHostPatternSelect('problemhosts', _('Problem hosts')))
- ->setPlaceholder(_('host pattern'));
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_problemhosts->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('problemhosts', $this->data)) {
- $field_problemhosts->setValue($this->data['problemhosts']);
- }
-
- $this->fields[$field_problemhosts->getName()] = $field_problemhosts;
-
- // Severity checkboxes list.
- $field_severities = new CWidgetFieldSeverities('severities', _('Severity'));
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_severities->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('severities', $this->data)) {
- $field_severities->setValue($this->data['severities']);
- }
-
- $this->fields[$field_severities->getName()] = $field_severities;
-
- // Problem name input-text field.
- $field_problem_name = (new CWidgetFieldTextBox('problem_name', _('Problem')))
- ->setPlaceholder(_('problem pattern'));
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_problem_name->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('problem_name', $this->data)) {
- $field_problem_name->setValue($this->data['problem_name']);
- }
-
- $this->fields[$field_problem_name->getName()] = $field_problem_name;
-
- // Problem tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_evaltype->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Problem tags field.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_tags->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
- }
-
- private function initOverridesFields(): void {
- $field_or = (new CWidgetFieldGraphOverride('or', _('Overrides')))->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if (array_key_exists('or', $this->data)) {
- $field_or->setValue($this->data['or']);
- }
-
- $this->fields[$field_or->getName()] = $field_or;
- }
-
- /**
- * Validate "from" and "to" parameters for allowed period.
- *
- * @param string $from
- * @param string $to
- *
- * @return array
- */
- private static function validateTimeSelectorPeriod(string $from, string $to): array {
- $errors = [];
- $ts = [];
- $ts['now'] = time();
- $range_time_parser = new CRangeTimeParser();
-
- foreach (['from' => $from, 'to' => $to] as $field => $value) {
- $range_time_parser->parse($value);
- $ts[$field] = $range_time_parser
- ->getDateTime($field === 'from')
- ->getTimestamp();
- }
-
- $period = $ts['to'] - $ts['from'] + 1;
- $range_time_parser->parse('now-'.CSettingsHelper::get(CSettingsHelper::MAX_PERIOD));
- $max_period = 1 + $ts['now'] - $range_time_parser
- ->getDateTime(true)
- ->getTimestamp();
-
- if ($period < ZBX_MIN_PERIOD) {
- $errors[] = _n('Minimum time period to display is %1$s minute.',
- 'Minimum time period to display is %1$s minutes.', (int) (ZBX_MIN_PERIOD / SEC_PER_MIN)
- );
- }
- elseif ($period > $max_period) {
- $errors[] = _n('Maximum time period to display is %1$s day.',
- 'Maximum time period to display is %1$s days.', (int) round($max_period / SEC_PER_DAY)
- );
- }
-
- return $errors;
- }
-}