diff options
Diffstat (limited to 'ui/widgets/plaintext/views/widget.view.php')
-rw-r--r-- | ui/widgets/plaintext/views/widget.view.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/ui/widgets/plaintext/views/widget.view.php b/ui/widgets/plaintext/views/widget.view.php new file mode 100644 index 00000000000..5ddea6ea7e0 --- /dev/null +++ b/ui/widgets/plaintext/views/widget.view.php @@ -0,0 +1,105 @@ +<?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. +**/ + + +/** + * Plain text widget view. + * + * @var CView $this + * @var array $data + */ + +$table = new CTableInfo(); + +if ($data['error'] != null) { + $table->setNoDataMessage($data['error']); +} +else { + $table_header = [(new CColHeader(_x('Timestamp', 'compact table header')))->addClass(ZBX_STYLE_CELL_WIDTH)]; + $names_at_top = ($data['style'] == STYLE_TOP && count($data['items']) > 1); + + if ($names_at_top) { + $table->makeVerticalRotation(); + + foreach ($data['items'] as $item) { + $table_header[] = (new CColHeader( + ($data['same_host'] ? '' : $item['hosts'][0]['name'].NAME_DELIMITER).$item['name'] + )) + ->addClass('vertical_rotation') + ->setTitle($item['name']); + } + } + else { + if ($data['style'] == STYLE_LEFT) { + $table_header[] = _x('Name', 'compact table header'); + } + $table_header[] = _x('Value', 'compact table header'); + } + $table->setHeader($table_header); + + $clock = 0; + $row_values = []; + + do { + $history_item = array_shift($data['histories']); + + if ($history_item !== null && !$names_at_top) { + $table_row = [ + (new CCol(zbx_date2str(DATE_TIME_FORMAT_SECONDS, $history_item['clock'])))->addClass(ZBX_STYLE_NOWRAP) + ]; + if ($data['style'] == STYLE_LEFT) { + $table->setHeadingColumn(1); + $table_row[] = ($data['same_host'] + ? '' + : $data['items'][$history_item['itemid']]['hosts'][0]['name'].NAME_DELIMITER). + $data['items'][$history_item['itemid']]['name']; + } + $table_row[] = $history_item['value']; + $table->addRow($table_row); + } + else { + if (($history_item === null && $row_values) + || ($history_item !== null && ( + ($clock != 0 && $history_item['clock'] != $clock) + || array_key_exists($history_item['itemid'], $row_values))) + ) { + $table_row = [ + (new CCol(zbx_date2str(DATE_TIME_FORMAT_SECONDS, $clock)))->addClass(ZBX_STYLE_NOWRAP) + ]; + foreach ($data['items'] as $item) { + $table_row[] = array_key_exists($item['itemid'], $row_values) + ? $row_values[$item['itemid']] + : ''; + } + $table->addRow($table_row); + $row_values = []; + } + + if ($history_item !== null) { + $clock = $history_item['clock']; + $row_values[$history_item['itemid']] = $history_item['value']; + } + } + } while ($history_item !== null && $table->getNumRows() < $data['show_lines']); +} + +(new CWidgetView($data)) + ->addItem($table) + ->show(); |