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/CWidgetConfig.php')
-rw-r--r--ui/include/classes/widgets/CWidgetConfig.php501
1 files changed, 0 insertions, 501 deletions
diff --git a/ui/include/classes/widgets/CWidgetConfig.php b/ui/include/classes/widgets/CWidgetConfig.php
deleted file mode 100644
index 1d37c52e602..00000000000
--- a/ui/include/classes/widgets/CWidgetConfig.php
+++ /dev/null
@@ -1,501 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** 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 CWidgetConfig {
-
- /**
- * Array of deprecated widgets constants.
- */
- public const DEPRECATED_WIDGETS = [
- WIDGET_DATA_OVER
- ];
-
- /**
- * Classifier for non-template dashboards.
- */
- public const CONTEXT_DASHBOARD = 'dashboard';
-
- /**
- * Classifier for template and host dashboards.
- */
- public const CONTEXT_TEMPLATE_DASHBOARD = 'template_dashboard';
-
- /**
- * Get default names for all widget types.
- *
- * @static
- *
- * @param string $context CWidgetConfig::CONTEXT_DASHBOARD | CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- *
- * @return array
- */
- public static function getKnownWidgetTypes(string $context): array {
- $types = [
- WIDGET_ACTION_LOG => _('Action log'),
- WIDGET_CLOCK => _('Clock'),
- WIDGET_DATA_OVER => _('Data overview'),
- WIDGET_DISCOVERY => _('Discovery status'),
- WIDGET_FAV_GRAPHS => _('Favorite graphs'),
- WIDGET_FAV_MAPS => _('Favorite maps'),
- WIDGET_GEOMAP => _('Geomap'),
- WIDGET_ITEM => _('Item value'),
- WIDGET_GRAPH => _('Graph (classic)'),
- WIDGET_GRAPH_PROTOTYPE => _('Graph prototype'),
- WIDGET_HOST_AVAIL => _('Host availability'),
- WIDGET_MAP => _('Map'),
- WIDGET_NAV_TREE => _('Map navigation tree'),
- WIDGET_PLAIN_TEXT => _('Plain text'),
- WIDGET_PROBLEM_HOSTS => _('Problem hosts'),
- WIDGET_PROBLEMS => _('Problems'),
- WIDGET_PROBLEMS_BY_SV => _('Problems by severity'),
- WIDGET_SLA_REPORT => _('SLA report'),
- WIDGET_SVG_GRAPH => _('Graph'),
- WIDGET_SYSTEM_INFO => _('System information'),
- WIDGET_TRIG_OVER => _('Trigger overview'),
- WIDGET_URL => _('URL'),
- WIDGET_WEB => _('Web monitoring'),
- WIDGET_TOP_HOSTS => _('Top hosts')
- ];
-
- $types = array_filter($types,
- function(string $type) use ($context): bool {
- return self::isWidgetTypeSupportedInContext($type, $context);
- },
- ARRAY_FILTER_USE_KEY
- );
-
- return $types;
- }
-
- /**
- * Get JavaScript classes for all widget types.
- *
- * @static
- *
- * @return array
- */
- public static function getJSClasses(): array {
- return [
- WIDGET_ACTION_LOG => 'CWidget',
- WIDGET_CLOCK => 'CWidgetClock',
- WIDGET_DATA_OVER => 'CWidget',
- WIDGET_DISCOVERY => 'CWidget',
- WIDGET_FAV_GRAPHS => 'CWidget',
- WIDGET_FAV_MAPS => 'CWidget',
- WIDGET_GEOMAP => 'CWidgetGeoMap',
- WIDGET_ITEM => 'CWidgetItem',
- WIDGET_GRAPH => 'CWidgetGraph',
- WIDGET_GRAPH_PROTOTYPE => 'CWidgetGraphPrototype',
- WIDGET_HOST_AVAIL => 'CWidget',
- WIDGET_MAP => 'CWidgetMap',
- WIDGET_NAV_TREE => 'CWidgetNavTree',
- WIDGET_PLAIN_TEXT => 'CWidget',
- WIDGET_PROBLEM_HOSTS => 'CWidget',
- WIDGET_PROBLEMS => 'CWidgetProblems',
- WIDGET_PROBLEMS_BY_SV => 'CWidgetProblemsBySv',
- WIDGET_SLA_REPORT => 'CWidget',
- WIDGET_SVG_GRAPH => 'CWidgetSvgGraph',
- WIDGET_SYSTEM_INFO => 'CWidget',
- WIDGET_TRIG_OVER => 'CWidgetTrigerOver',
- WIDGET_URL => 'CWidget',
- WIDGET_WEB => 'CWidget',
- WIDGET_TOP_HOSTS => 'CWidget'
- ];
- }
-
- /**
- * Get reference field name for widgets of the given type.
- *
- * @static
- *
- * @return string|null
- */
- public static function getReferenceField(string $type): ?string {
- switch ($type) {
- case WIDGET_MAP:
- case WIDGET_NAV_TREE:
- return 'reference';
-
- default:
- return null;
- }
- }
-
- /**
- * Get foreign reference field names for widgets of the given type.
- *
- * @static
- *
- * @return array
- */
- public static function getForeignReferenceFields(string $type): array {
- switch ($type) {
- case WIDGET_MAP:
- return ['filter_widget_reference'];
-
- default:
- return [];
- }
- }
-
- /**
- * Get default widget dimensions.
- *
- * @static
- *
- * @return array
- */
- private static function getDefaultDimensions(): array {
- return [
- WIDGET_ACTION_LOG => ['width' => 12, 'height' => 5],
- WIDGET_CLOCK => ['width' => 4, 'height' => 3],
- WIDGET_DATA_OVER => ['width' => 12, 'height' => 5],
- WIDGET_DISCOVERY => ['width' => 6, 'height' => 3],
- WIDGET_FAV_GRAPHS => ['width' => 4, 'height' => 3],
- WIDGET_FAV_MAPS => ['width' => 4, 'height' => 3],
- WIDGET_GEOMAP => ['width' => 12, 'height' => 5],
- WIDGET_ITEM => ['width' => 4, 'height' => 3],
- WIDGET_GRAPH => ['width' => 12, 'height' => 5],
- WIDGET_GRAPH_PROTOTYPE => ['width' => 16, 'height' => 5],
- WIDGET_HOST_AVAIL => ['width' => 6, 'height' => 3],
- WIDGET_MAP => ['width' => 18, 'height' => 5],
- WIDGET_NAV_TREE => ['width' => 6, 'height' => 5],
- WIDGET_PLAIN_TEXT => ['width' => 6, 'height' => 3],
- WIDGET_PROBLEM_HOSTS => ['width' => 12, 'height' => 5],
- WIDGET_PROBLEMS => ['width' => 12, 'height' => 5],
- WIDGET_PROBLEMS_BY_SV => ['width' => 12, 'height' => 5],
- WIDGET_SLA_REPORT => ['width' => 12, 'height' => 5],
- WIDGET_SVG_GRAPH => ['width' => 12, 'height' => 5],
- WIDGET_SYSTEM_INFO => ['width' => 12, 'height' => 5],
- WIDGET_TRIG_OVER => ['width' => 12, 'height' => 5],
- WIDGET_URL => ['width' => 12, 'height' => 5],
- WIDGET_WEB => ['width' => 6, 'height' => 3],
- WIDGET_TOP_HOSTS => ['width' => 12, 'height' => 5]
- ];
- }
-
- /**
- * Get default values for widgets.
- *
- * @static
- *
- * @param string $context CWidgetConfig::CONTEXT_DASHBOARD | CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- *
- * @return array
- */
- public static function getDefaults(string $context): array {
- $ret = [];
-
- $dimensions = self::getDefaultDimensions();
- $js_clases = self::getJSClasses();
-
- foreach (self::getKnownWidgetTypes($context) as $type => $name) {
- $ret[$type] = [
- 'name' => $name,
- 'size' => $dimensions[$type],
- 'js_class' => $js_clases[$type],
- 'iterator' => self::isIterator($type),
- 'reference_field' => self::getReferenceField($type),
- 'foreign_reference_fields' => self::getForeignReferenceFields($type)
- ];
- }
-
- return $ret;
- }
-
- /**
- * Check if widget type is supported in a given context.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param string $context CWidgetConfig::CONTEXT_DASHBOARD | CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- *
- * @return bool
- */
- public static function isWidgetTypeSupportedInContext(string $type, string $context): bool {
- switch ($context) {
- case self::CONTEXT_DASHBOARD:
- return true;
-
- case self::CONTEXT_TEMPLATE_DASHBOARD:
- switch ($type) {
- case WIDGET_CLOCK:
- case WIDGET_GRAPH:
- case WIDGET_GRAPH_PROTOTYPE:
- case WIDGET_ITEM:
- case WIDGET_PLAIN_TEXT:
- case WIDGET_URL:
- return true;
-
- default:
- return false;
- }
- }
- }
-
- /**
- * Get default refresh rate for widget type.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- *
- * @return int default refresh rate, 0 for no refresh
- */
- public static function getDefaultRfRate(string $type): int {
- switch ($type) {
- case WIDGET_ACTION_LOG:
- case WIDGET_DATA_OVER:
- case WIDGET_TOP_HOSTS:
- case WIDGET_DISCOVERY:
- case WIDGET_GEOMAP:
- case WIDGET_GRAPH:
- case WIDGET_GRAPH_PROTOTYPE:
- case WIDGET_PLAIN_TEXT:
- case WIDGET_ITEM:
- case WIDGET_PROBLEM_HOSTS:
- case WIDGET_PROBLEMS:
- case WIDGET_PROBLEMS_BY_SV:
- case WIDGET_SVG_GRAPH:
- case WIDGET_TRIG_OVER:
- case WIDGET_WEB:
- return SEC_PER_MIN;
-
- case WIDGET_CLOCK:
- case WIDGET_FAV_GRAPHS:
- case WIDGET_FAV_MAPS:
- case WIDGET_HOST_AVAIL:
- case WIDGET_MAP:
- case WIDGET_NAV_TREE:
- case WIDGET_SYSTEM_INFO:
- return 15 * SEC_PER_MIN;
-
- case WIDGET_SLA_REPORT:
- case WIDGET_URL:
- return 0;
- }
- }
-
- /**
- * Get all possible widget refresh intervals.
- *
- * @return array
- */
- public static function getRfRates() {
- return [
- 0 => _('No refresh'),
- SEC_PER_MIN / 6 => _n('%1$s second', '%1$s seconds', 10),
- SEC_PER_MIN / 2 => _n('%1$s second', '%1$s seconds', 30),
- SEC_PER_MIN => _n('%1$s minute', '%1$s minutes', 1),
- SEC_PER_MIN * 2 => _n('%1$s minute', '%1$s minutes', 2),
- SEC_PER_MIN * 10 => _n('%1$s minute', '%1$s minutes', 10),
- SEC_PER_MIN * 15 => _n('%1$s minute', '%1$s minutes', 15)
- ];
- }
-
- /**
- * Check if time selector is necessary for widget having specified type and fields.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param array $fields
- *
- * @return bool
- */
- public static function usesTimeSelector(string $type, array $fields): bool {
- switch ($type) {
- case WIDGET_GRAPH:
- case WIDGET_GRAPH_PROTOTYPE:
- return true;
-
- case WIDGET_SVG_GRAPH:
- return !CWidgetFormSvgGraph::hasOverrideTime($fields);
-
- default:
- return false;
- }
- }
-
- /**
- * Check if widget type belongs to iterators.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- *
- * @return bool
- */
- public static function isIterator(string $type): bool {
- switch ($type) {
- case WIDGET_GRAPH_PROTOTYPE:
- return true;
-
- default:
- return false;
- }
- }
-
- /**
- * Check if widget has padding or not.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param array $fields Widget form fields
- * @param int $view_mode Widget view mode. ZBX_WIDGET_VIEW_MODE_NORMAL by default
- *
- * @return bool
- */
- private static function hasPadding(string $type, array $fields, int $view_mode): bool {
- if ($view_mode == ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER) {
- switch ($type) {
- case WIDGET_CLOCK:
- return $fields['clock_type'] === WIDGET_CLOCK_TYPE_ANALOG;
-
- case WIDGET_GRAPH:
- case WIDGET_MAP:
- case WIDGET_SVG_GRAPH:
- return true;
-
- default:
- return false;
- }
- }
- else {
- switch ($type) {
- case WIDGET_CLOCK:
- return $fields['clock_type'] === WIDGET_CLOCK_TYPE_ANALOG;
-
- case WIDGET_HOST_AVAIL:
- return (count($fields['interface_type']) != 1);
-
- case WIDGET_PROBLEMS_BY_SV:
- return $fields['show_type'] != WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS;
-
- case WIDGET_GRAPH_PROTOTYPE:
- case WIDGET_ITEM:
- case WIDGET_URL:
- return false;
-
- default:
- return true;
- }
- }
- }
-
- /**
- * Get widget configuration based on widget type, fields and current view mode.
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param array $fields Widget form fields
- * @param int $view_mode Widget view mode
- *
- * @return array
- */
- public static function getConfiguration(string $type, array $fields, int $view_mode): array {
- return [
- 'padding' => self::hasPadding($type, $fields, $view_mode)
- ];
- }
-
- /**
- * Get Form object for widget with provided data.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param string $data JSON string with widget fields.
- * @param string|null $templateid Template ID for template dashboards or null for non-template dashboards.
- *
- * @return CWidgetForm
- */
- public static function getForm(string $type, string $data, ?string $templateid): CWidgetForm {
- switch ($type) {
- case WIDGET_ACTION_LOG:
- return new CWidgetFormActionLog($data, $templateid);
-
- case WIDGET_CLOCK:
- return new CWidgetFormClock($data, $templateid);
-
- case WIDGET_DATA_OVER:
- return new CWidgetFormDataOver($data, $templateid);
-
- case WIDGET_GEOMAP:
- return new CWidgetFormGeoMap($data, $templateid);
-
- case WIDGET_GRAPH:
- return new CWidgetFormGraph($data, $templateid);
-
- case WIDGET_GRAPH_PROTOTYPE:
- return new CWidgetFormGraphPrototype($data, $templateid);
-
- case WIDGET_HOST_AVAIL:
- return new CWidgetFormHostAvail($data, $templateid);
-
- case WIDGET_MAP:
- return new CWidgetFormMap($data, $templateid);
-
- case WIDGET_NAV_TREE:
- return new CWidgetFormNavTree($data, $templateid);
-
- case WIDGET_PLAIN_TEXT:
- return new CWidgetFormPlainText($data, $templateid);
-
- case WIDGET_PROBLEM_HOSTS:
- return new CWidgetFormProblemHosts($data, $templateid);
-
- case WIDGET_PROBLEMS:
- return new CWidgetFormProblems($data, $templateid);
-
- case WIDGET_PROBLEMS_BY_SV:
- return new CWidgetFormProblemsBySv($data, $templateid);
-
- case WIDGET_SLA_REPORT:
- return new CWidgetFormSlaReport($data, $templateid);
-
- case WIDGET_SVG_GRAPH:
- return new CWidgetFormSvgGraph($data, $templateid);
-
- case WIDGET_SYSTEM_INFO:
- return new CWidgetFormSystemInfo($data, $templateid);
-
- case WIDGET_TRIG_OVER:
- return new CWidgetFormTrigOver($data, $templateid);
-
- case WIDGET_URL:
- return new CWidgetFormUrl($data, $templateid);
-
- case WIDGET_WEB:
- return new CWidgetFormWeb($data, $templateid);
-
- case WIDGET_ITEM:
- return new CWidgetFormItem($data, $templateid);
-
- case WIDGET_TOP_HOSTS:
- return new CWidgetFormTopHosts($data, $templateid);
-
- default:
- return new CWidgetForm($data, $templateid, $type);
- }
- }
-}