<?php
/*
** Zabbix
** Copyright (C) 2001-2025 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.
**/


require_once dirname(__FILE__) . '/../../include/CWebTest.php';

/**
 * @backup profiles
 *
 * @onBefore prepareGraphData
 */
class testDataDisplayInGraphs extends CWebTest {

	protected static $hostid;
	protected static $itemids;
	protected static $dashboardid;

	const TIMESTAMPS = [
			'history' => [
				'from' => '2023-10-07 12:58:00',
				'to' => '2023-10-07 13:20:00'
			],
			'trends' => [
				'from' => '2023-10-03 00:00:00',
				'to' => '2023-10-07 12:00:00'
			],
			'pie' => [
				'from' => 'now-1h',
				'to' => 'now'
			]
		];

	public static function prepareGraphData() {
		$host_responce = CDataHelper::createHosts([
			[
				'host' => 'Host for data display on graphs',
				'interfaces' => [
					[
						'type' => INTERFACE_TYPE_AGENT,
						'main' => 1,
						'useip' => 1,
						'ip' => '127.0.0.1',
						'dns' => '',
						'port' => 10051
					]
				],
				'groups' => [
					'groupid' => 4 // Host group "Zabbix servers".
				],
				'status' => HOST_STATUS_MONITORED,
				'items' => [
					[
						'name' => 'Item for history data display 1',
						'key_' => 'item_key_1',
						'type' => ITEM_TYPE_ZABBIX,
						'value_type' => ITEM_VALUE_TYPE_FLOAT,
						'delay' => '1m',
						'history' => '9125d',
						'trends' => 0
					],
					[
						'name' => 'Item for history data display 2',
						'key_' => 'item_key_2',
						'type' => ITEM_TYPE_ZABBIX,
						'value_type' => ITEM_VALUE_TYPE_FLOAT,
						'delay' => '1m',
						'history' => '9125d',
						'trends' => 0
					],
					[
						'name' => 'Item for trends data display 1',
						'key_' => 'item_key_3',
						'type' => ITEM_TYPE_ZABBIX,
						'value_type' => ITEM_VALUE_TYPE_FLOAT,
						'delay' => '2h',
						'trends' => '9125d'
					],
					[
						'name' => 'Item for trends data display 2',
						'key_' => 'item_key_4',
						'type' => ITEM_TYPE_ZABBIX,
						'value_type' => ITEM_VALUE_TYPE_FLOAT,
						'delay' => '2h',
						'trends' => '9125d'
					],
					[
						'name' => 'Item for pie chart 1',
						'key_' => 'item_key_5',
						'type' => ITEM_TYPE_ZABBIX,
						'value_type' => ITEM_VALUE_TYPE_FLOAT,
						'delay' => '1m'
					],
					[
						'name' => 'Item for pie chart 2',
						'key_' => 'item_key_6',
						'type' => ITEM_TYPE_ZABBIX,
						'value_type' => ITEM_VALUE_TYPE_FLOAT,
						'delay' => '1m'
					]
				]
			]
		]);

		self::$hostid = $host_responce['hostids']['Host for data display on graphs'];

		self::$itemids = [
			'Item for history data display 1' => $host_responce['itemids']['Host for data display on graphs:item_key_1'],
			'Item for history data display 2' => $host_responce['itemids']['Host for data display on graphs:item_key_2'],
			'Item for trends data display 1' => $host_responce['itemids']['Host for data display on graphs:item_key_3'],
			'Item for trends data display 2' => $host_responce['itemids']['Host for data display on graphs:item_key_4'],
			'Item for pie chart 1' => $host_responce['itemids']['Host for data display on graphs:item_key_5'],
			'Item for pie chart 2' => $host_responce['itemids']['Host for data display on graphs:item_key_6']
		];

		$graph_responce = CDataHelper::call('graph.create', [
			[
				'name' => 'History graph 1',
				'width' => 800,
				'height' => 250,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for history data display 1'],
						'color' => 'FF0000'
					]
				]
			],
			[
				'name' => 'History graph 2 - stacked',
				'width' => 950,
				'height' => 300,
				'yaxismin' => -5,
				'yaxismax' => 20,
				'show_work_period' => 0,
				'show_triggers' => 0,
				'graphtype' => GRAPH_TYPE_STACKED,
				'show_legend' => 0,
				'ymin_type' => 1,
				'ymax_type' => 1,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for history data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 2,
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'History graph 1 + 2',
				'width' => 1000,
				'height' => 400,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for history data display 1'],
						'color' => 'FF0000'
					],
					[
						'itemid' => self::$itemids['Item for history data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 2, // Should not influence the graph since only history data will be displayed.
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'History graph 1 + 2 - stacked',
				'width' => 1000,
				'height' => 400,
				'graphtype' => GRAPH_TYPE_STACKED,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for history data display 1'],
						'color' => 'FF0000'
					],
					[
						'itemid' => self::$itemids['Item for history data display 2'],
						'color' => '1A7C11'
					]
				]
			],
			[
				'name' => 'Trends graph 1',
				'width' => 800,
				'height' => 250,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for trends data display 1'],
						'color' => 'FF0000',
						'calc_fnc' => 7
					]
				]
			],
			[
				'name' => 'Trends graph 2',
				'width' => 950,
				'height' => 300,
				'yaxismin' => -5,
				'yaxismax' => 20,
				'show_work_period' => 0,
				'show_triggers' => 0,
				'graphtype' => GRAPH_TYPE_STACKED,
				'show_legend' => 0,
				'ymin_type' => 1,
				'ymax_type' => 1,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for trends data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 7,
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'All: Trends graph 1 + 2',
				'width' => 1000,
				'height' => 400,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for trends data display 1'],
						'color' => 'FF0000',
						'calc_fnc' => 7
					],
					[
						'itemid' => self::$itemids['Item for trends data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 7,
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'Min: Trends graph 1 + 2',
				'width' => 1000,
				'height' => 400,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for trends data display 1'],
						'color' => 'FF0000',
						'calc_fnc' => 1
					],
					[
						'itemid' => self::$itemids['Item for trends data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 1,
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'Avg: Trends graph 1 + 2',
				'width' => 1000,
				'height' => 400,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for trends data display 1'],
						'color' => 'FF0000',
						'calc_fnc' => 2
					],
					[
						'itemid' => self::$itemids['Item for trends data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 2,
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'Max: Trends graph 1 + 2',
				'width' => 1000,
				'height' => 400,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for trends data display 1'],
						'color' => 'FF0000',
						'calc_fnc' => 4
					],
					[
						'itemid' => self::$itemids['Item for trends data display 2'],
						'color' => '1A7C11',
						'calc_fnc' => 4,
						'yaxisside' => 1
					]
				]
			],
			[
				'name' => 'Pie chart - flat view',
				'graphtype' => GRAPH_TYPE_PIE,
				'width' => 400,
				'height' => 300,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for pie chart 1'],
						'color' => '00FF00'
					],
					[
						'itemid' => self::$itemids['Item for pie chart 2'],
						'color' => 'FF0000'
					]
				]
			],
			[
				'name' => 'Pie chart - 3D view',
				'graphtype' => GRAPH_TYPE_PIE,
				'width' => 400,
				'height' => 300,
				'show_3d' => 1,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for pie chart 1'],
						'color' => '00FF00'
					],
					[
						'itemid' => self::$itemids['Item for pie chart 2'],
						'color' => 'FF0000'
					]
				]
			],
			[
				'name' => 'Exploded chart - flat view',
				'graphtype' => GRAPH_TYPE_EXPLODED,
				'width' => 400,
				'height' => 300,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for pie chart 1'],
						'color' => '00FF00'
					],
					[
						'itemid' => self::$itemids['Item for pie chart 2'],
						'color' => 'FF0000'
					]
				]
			],
			[
				'name' => 'Exploded chart - 3D view',
				'graphtype' => GRAPH_TYPE_EXPLODED,
				'width' => 400,
				'height' => 300,
				'show_3d' => 1,
				'gitems' => [
					[
						'itemid' => self::$itemids['Item for pie chart 1'],
						'color' => '00FF00'
					],
					[
						'itemid' => self::$itemids['Item for pie chart 2'],
						'color' => 'FF0000'
					]
				]
			]
		]);

		// This timestamp represents the changing point between trends and history data.
		$timestamp = '07-10-2023 12:00 EET';

		$item_data = [
			// Trends data for first trends item.
			[
				'itemid' => self::$itemids['Item for trends data display 1'],
				'timestamps' => [
					$timestamp.' - 5 days + 18 hours',
					$timestamp.' - 4 days',
					$timestamp.' - 4 days + 6 hours',
					$timestamp.' - 4 days + 12 hours',
					$timestamp.' - 4 days + 18 hours',
					$timestamp.' - 3 days',
					$timestamp.' - 3 days + 3 hours',
					$timestamp.' - 3 days + 6 hours',
					$timestamp.' - 3 days + 9 hours',
					$timestamp.' - 3 days + 12 hours',
					$timestamp.' - 3 days + 21 hours',
					$timestamp.' - 2 days',
					$timestamp.' - 2 days + 21 hours',
					$timestamp.' - 1 day',
					$timestamp.' - 1 day + 3 hours',
					$timestamp.' - 1 day + 6 hours',
					$timestamp.' - 1 day + 12 hours',
					$timestamp.' - 1 day + 15 hours'
				],
				'values' => [
					[
						'num' => 3,
						'avg' => 6.03,
						'min' => -4.1,
						'max' => 13.57
					],
					[
						'num' => 3,
						'avg' => 4.73,
						'min' => -0.74,
						'max' => 9.01
					],
					[
						'num' => 3,
						'avg' => 8.23,
						'min' => 3.7,
						'max' => 15.3
					],
					[
						'num' => 3,
						'avg' => 2.95,
						'min' => 0.1,
						'max' => 5.2
					],
					[
						'num' => 3,
						'avg' => 6.66,
						'min' => 1.19,
						'max' => 12.2
					],
					[
						'num' => 3,
						'avg' => 7.07,
						'min' => 2.22,
						'max' => 13.38
					],
					[
						'num' => 3,
						'avg' => 5.19,
						'min' => 2.41,
						'max' => 9.62
					],
					[
						'num' => 3,
						'avg' => 8.42,
						'min' => 3.37,
						'max' => 11.02
					],
					[
						'num' => 3,
						'avg' => 5.75,
						'min' => 2.13,
						'max' => 13.72
					],
					[
						'num' => 3,
						'avg' => 8,
						'min' => 4.32,
						'max' => 11.7
					],
					[
						'num' => 3,
						'avg' => 4.3,
						'min' => 0.97,
						'max' => 8.73
					],
					[
						'num' => 3,
						'avg' => 6.9,
						'min' => 2.81,
						'max' => 12.1
					],
					[
						'num' => 3,
						'avg' => 7.12,
						'min' => 4.04,
						'max' => 11.26
					],
					[
						'num' => 3,
						'avg' => 5.05,
						'min' => 1.92,
						'max' => 13.01
					],
					[
						'num' => 3,
						'avg' => 3.83,
						'min' => -1.13,
						'max' => 8.15
					],
					[
						'num' => 3,
						'avg' => 9.23,
						'min' => -3.7,
						'max' => 21.13
					],
					[
						'num' => 3,
						'avg' => 4.95,
						'min' => 2.1,
						'max' => 7.2
					],
					[
						'num' => 3,
						'avg' => 6.5,
						'min' => 0.1,
						'max' => 15.21
					]
				]
			],
			// History data for first history item.
			[
				'itemid' => self::$itemids['Item for history data display 1'],
				'timestamps' => [
					$timestamp,
					$timestamp.' + 1 minute',
					$timestamp.' + 2 minute',
					$timestamp.' + 3 minute',
					$timestamp.' + 6 minute',
					$timestamp.' + 7 minute',
					$timestamp.' + 8 minute',
					$timestamp.' + 13 minute',
					$timestamp.' + 14 minute',
					$timestamp.' + 15 minute',
					$timestamp.' + 16 minute',
					$timestamp.' + 17 minute',
					$timestamp.' + 18 minute'
				],
				'values' => [10.5, 8.33, 12.69, 4.025, 3.1, 7, 6.66, -1.5, 0.31, 6.47, 2.11, 8.98, 10.01]
			],
			// Trends data for second trends item.
			[
				'itemid' => self::$itemids['Item for trends data display 2'],
				'timestamps' => [
					$timestamp.' - 5 days + 18 hours',
					$timestamp.' - 4 days',
					$timestamp.' - 4 days + 6 hours',
					$timestamp.' - 4 days + 12 hours',
					$timestamp.' - 4 days + 18 hours',
					$timestamp.' - 3 days',
					$timestamp.' - 3 days + 6 hours',
					$timestamp.' - 2 days + 6 hours',
					$timestamp.' - 2 days + 12 hours',
					$timestamp.' - 2 days + 18 hours',
					$timestamp.' - 1 day + 6 hours',
					$timestamp.' - 1 day + 12 hours',
					$timestamp.' - 1 day + 18 hours'
				],
				'values' => [
					[
						'num' => 59,
						'avg' => 9.07,
						'min' => 4.54,
						'max' => 13.81
					],
					[
						'num' => 59,
						'avg' => 3.62,
						'min' => -2.91,
						'max' => 7.77
					],
					[
						'num' => 59,
						'avg' => 6.99,
						'min' => 0.01,
						'max' => 15.45
					],
					[
						'num' => 48,
						'avg' => 4.31,
						'min' => -2.56,
						'max' => 10.1
					],
					[
						'num' => 51,
						'avg' => 5.12,
						'min' => 1.45,
						'max' => 9.23
					],
					[
						'num' => 59,
						'avg' => 8.31,
						'min' => -1.05,
						'max' => 17.26
					],
					[
						'num' => 59,
						'avg' => 7.71,
						'min' => 2.19,
						'max' => 11.11
					],
					[
						'num' => 35,
						'avg' => 4.96,
						'min' => -4.41,
						'max' => 13.35
					],
					[
						'num' => 52,
						'avg' => 9.1,
						'min' => 3.01,
						'max' => 14.45
					],
					[
						'num' => 59,
						'avg' => 6,
						'min' => 5.5,
						'max' => 6.5
					],
					[
						'num' => 59,
						'avg' => 8.21,
						'min' => -4.1,
						'max' => 12.31
					],
					[
						'num' => 59,
						'avg' => 4.74,
						'min' => 0.05,
						'max' => 9.26
					],
					[
						'num' => 59,
						'avg' => 7.12,
						'min' => 1.55,
						'max' => 10.42
					]
				]
			],
			// History data for second history item.
			[
				'itemid' => self::$itemids['Item for history data display 2'],
				'timestamps' => [
					$timestamp,
					$timestamp.' + 1 minute',
					$timestamp.' + 2 minute',
					$timestamp.' + 3 minute',
					$timestamp.' + 4 minute',
					$timestamp.' + 5 minute',
					$timestamp.' + 6 minute',
					$timestamp.' + 11 minute',
					$timestamp.' + 12 minute',
					$timestamp.' + 13 minute',
					$timestamp.' + 16 minute',
					$timestamp.' + 17 minute',
					$timestamp.' + 18 minute'
				],
				'values' => [4.31, -0.5, 7.53, 2.37, 5.55, 7.77, 9.11, 10.34, 2.23, 5.98, -3.21, 2.45, 5.1]
			]
		];

		// Add history and trends values to item displayed in graphs and widgets.
		foreach ($item_data as $data) {
			foreach ($data['timestamps'] as &$timestamp) {
				$timestamp = strtotime($timestamp);
			}

			unset($timestamp);
			CDataHelper::addItemData($data['itemid'], $data['values'], $data['timestamps']);
		}

		CDataHelper::addItemData(self::$itemids['Item for pie chart 1'], 0.66);
		CDataHelper::addItemData(self::$itemids['Item for pie chart 2'], 0.34);

		// Create dashboard with SVG graphs and classic graph widgets.
		$dashboard_responce = CDataHelper::call('dashboard.create', [
			[
				'name' => 'Dashboard to check data display in graphs',
				'display_period' => 60,
				'auto_start' => 1,
				'pages' => [
					[
						'name' => 'Host graphs',
						'widgets' => [
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][0]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][1]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 4,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][2]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 4,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][3]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 8,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][4]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 8,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][5]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 12,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][6]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 12,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][7]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 16,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][8]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 16,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][9]
									]
								]
							]
						]
					],
					[
						'name' => 'Pie charts',
						'widgets' => [
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 0,
								'width' => 6,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][10]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 6,
								'y' => 0,
								'width' => 6,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][11]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 0,
								'width' => 6,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][12]
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 18,
								'y' => 0,
								'width' => 6,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 6,
										'name' => 'graphid',
										'value' => $graph_responce['graphids'][13]
									]
								]
							]
						]
					],
					[
						'name' => 'Simple graphs',
						'widgets' => [
							[
								'type' => 'graph',
								'name' => '',
								'x' => 0,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 0,
										'name' => 'source_type',
										'value' => 1
									],
									[
										'type' => 4,
										'name' => 'itemid',
										'value' => self::$itemids['Item for history data display 1']
									]
								]
							],
							[
								'type' => 'graph',
								'name' => '',
								'x' => 12,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 0,
										'name' => 'source_type',
										'value' => 1
									],
									[
										'type' => 4,
										'name' => 'itemid',
										'value' => self::$itemids['Item for trends data display 1']
									]
								]
							]
						]
					],
					[
						'name' => 'SVG graph types',
						'widgets' => [
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph history draw = Line',
								'x' => 0,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '0080FF'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph history draw = Points',
								'x' => 12,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 0,
										'name' => 'ds.type.0',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.type.1',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '0080FF'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph history draw = Staircase',
								'x' => 0,
								'y' => 4,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 0,
										'name' => 'ds.type.0',
										'value' => 2
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.type.1',
										'value' => 2
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '0080FF'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph history draw = Bar',
								'x' => 12,
								'y' => 4,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 0,
										'name' => 'ds.type.0',
										'value' => 3
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.type.1',
										'value' => 3
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '0080FF'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph trends draw = Line',
								'x' => 0,
								'y' => 8,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => 'BF00FF'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '009688'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph trends draw = Points',
								'x' => 12,
								'y' => 8,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => 'BF00FF'
									],
									[
										'type' => 0,
										'name' => 'ds.type.0',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '009688'
									],
									[
										'type' => 0,
										'name' => 'ds.type.1',
										'value' => 1
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph trends draw = Staircase',
								'x' => 0,
								'y' => 12,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => 'BF00FF'
									],
									[
										'type' => 0,
										'name' => 'ds.type.0',
										'value' => 2
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '009688'
									],
									[
										'type' => 0,
										'name' => 'ds.type.1',
										'value' => 2
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'SVG Graph trends draw = Bar',
								'x' => 12,
								'y' => 12,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => 'BF00FF'
									],
									[
										'type' => 0,
										'name' => 'ds.type.0',
										'value' => 3
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => '009688'
									],
									[
										'type' => 0,
										'name' => 'ds.type.1',
										'value' => 3
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							]
						]
					],
					[
						'name' => 'Missing data + axes + timeshift + agg func',
						'widgets' => [
							[
								'type' => 'svggraph',
								'name' => 'history, missing data = connected',
								'x' => 0,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.0',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'B0AF07'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.1',
										'value' => 1
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'history, missing data = treat as 0',
								'x' => 12,
								'y' => 0,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.0',
										'value' => 2
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'B0AF07'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.1',
										'value' => 2
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'trends, missing data = connected',
								'x' => 0,
								'y' => 4,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.0',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => '0040FF'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'BF00FF'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.1',
										'value' => 1
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'trends, missing data = treat as 0',
								'x' => 12,
								'y' => 4,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.0',
										'value' => 2
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => '0040FF'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'BF00FF'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.1',
										'value' => 2
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'Axes options + time shift history',
								'x' => 0,
								'y' => 8,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 0,
										'name' => 'ds.axisy.0',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.timeshift.0',
										'value' => '5m'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'B0AF07'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => '2023-10-07 12:54:00'
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 1,
										'name' => 'lefty_min',
										'value' => '-10'
									],
									[
										'type' => 1,
										'name' => 'lefty_max',
										'value' => '11'
									],
									[
										'type' => 1,
										'name' => 'righty_min',
										'value' => '-5'
									],
									[
										'type' => 1,
										'name' => 'righty_max',
										'value' => '30'
									],
									[
										'type' => 0,
										'name' => 'righty_units',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'righty_static_units',
										'value' => 'minions'
									],
									[
										'type' => 0,
										'name' => 'axisx',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'history, axes options + time shift',
								'x' => 12,
								'y' => 8,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => '4000FF'
									],
									[
										'type' => 0,
										'name' => 'ds.axisy.0',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.timeshift.0',
										'value' => '-1d'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'B0AF07'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => '2023-10-08 12:00:00'
									],
									[
										'type' => 1,
										'name' => 'lefty_min',
										'value' => '-10'
									],
									[
										'type' => 1,
										'name' => 'lefty_max',
										'value' => '11'
									],
									[
										'type' => 0,
										'name' => 'lefty_units',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'lefty_static_units',
										'value' => 'girafs'
									],
									[
										'type' => 1,
										'name' => 'righty_min',
										'value' => '-5'
									],
									[
										'type' => 1,
										'name' => 'righty_max',
										'value' => '30'
									],
									[
										'type' => 0,
										'name' => 'axisx',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'history, no legend',
								'x' => 0,
								'y' => 12,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for history data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for history data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'B0AF07'
									],
									[
										'type' => 0,
										'name' => 'ds.missingdatafunc.1',
										'value' => 1
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['history']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['history']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									],
									[
										'type' => 0,
										'name' => 'legend',
										'value' => 0
									]
								]
							],
							[
								'type' => 'svggraph',
								'name' => 'trends, Agg func = min + max',
								'x' => 12,
								'y' => 12,
								'width' => 12,
								'height' => 4,
								'view_mode' => 0,
								'fields' => [
									[
										'type' => 1,
										'name' => 'ds.hosts.0.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.0.0',
										'value' => 'Item for trends data display 1'
									],
									[
										'type' => 1,
										'name' => 'ds.hosts.1.0',
										'value' => 'Host for data display on graphs'
									],
									[
										'type' => 1,
										'name' => 'ds.items.1.0',
										'value' => 'Item for trends data display 2'
									],
									[
										'type' => 1,
										'name' => 'ds.color.0',
										'value' => '0040FF'
									],
									[
										'type' => 1,
										'name' => 'ds.color.1',
										'value' => 'BF00FF'
									],
									[
										'type' => 0,
										'name' => 'ds.aggregate_function.0',
										'value' => 2
									],
									[
										'type' => 1,
										'name' => 'ds.aggregate_interval.0',
										'value' => '12h'
									],
									[
										'type' => 0,
										'name' => 'ds.aggregate_function.1',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'ds.aggregate_interval.1',
										'value' => '12h'
									],
									[
										'type' => 0,
										'name' => 'graph_time',
										'value' => 1
									],
									[
										'type' => 1,
										'name' => 'time_from',
										'value' => self::TIMESTAMPS['trends']['from']
									],
									[
										'type' => 1,
										'name' => 'time_to',
										'value' => self::TIMESTAMPS['trends']['to']
									],
									[
										'type' => 0,
										'name' => 'righty',
										'value' => 0
									]
								]
							]
						]
					]
				]
			]
		]);

		self::$dashboardid = $dashboard_responce['dashboardids'][0];
	}

	public function getMonitoringGraphData() {
		return [
			[
				[
					'type' => 'history'
				]
			],
			[
				[
					'type' => 'trends'
				]
			],
			[
				[
					'type' => 'pie'
				]
			],
			[
				[
					'type' => 'history',
					'kiosk_mode' => true
				]
			],
			[
				[
					'type' => 'trends',
					'kiosk_mode' => true
				]
			],
			[
				[
					'type' => 'pie',
					'kiosk_mode' => true
				]
			]
		];
	}

	/**
	 * @dataProvider getMonitoringGraphData
	 */
	public function testDataDisplayInGraphs_MonitoringHosts($data) {
		$this->page->login()->open('zabbix.php?action=charts.view&filter_set=1&filter_hostids%5B0%5D='.self::$hostid)
				->waitUntilReady();

		// Open the time selector tab if it's not opened yet.
		$timeselector_tab = $this->query('id:tab_1')->one();

		if ($timeselector_tab->isDisplayed(false)) {
			$this->query('xpath://a[contains(@class, "btn-time")]')->one()->click();
			$timeselector_tab->waitUntilVisible();
		}

		// Set time selector to display the time period, required for the corresponding data type.
		$this->setTimeSelector(self::TIMESTAMPS[$data['type']]);
		$this->page->waitUntilReady();

		// Switch to filter tab and fill in the name pattern to return only graphs with certain type.
		CFilterElement::find()->one()->selectTab('Filter');
		$filter_form = $this->query('name:zbx_filter')->asForm()->one();
		$filter_form->fill(['Name' => $data['type']]);

		$screenshot_string = (CTestArrayHelper::get($data, 'kiosk_mode'))
			? 'monitoring_hosts_'.$data['type'].'_kiosk_'
			: 'monitoring_hosts_'.$data['type'].'_';

		// Check screenshots of graphs for each option in 'Show' field.
		$show_data = $data['type'] === 'trends'
			? ['All graphs' => 8, 'Host graphs' => 6, 'Simple graphs' => 2]
			: ['All graphs' => 6, 'Host graphs' => 4, 'Simple graphs' => 2];
		foreach ($show_data as $show => $count) {
			// Pie widget displays data in non-fixed time period, so only host graph screenshot will not differ each time.
			if ($data['type'] === 'pie' && $show !== 'Host graphs') {
				continue;
			}

			// Select the desired value in Show field, if it is not selected already.
			$filter_form->invalidate();
			if ($filter_form->getField('Show')->getValue() !== $show) {
				$filter_form->fill(['Show' => $show]);
			}

			$filter_form->submit();
			$this->page->waitUntilReady();

			// Switch to kiosk mode if screenshot needs to be checked in Kiosk mode.
			if (CTestArrayHelper::get($data, 'kiosk_mode')) {
				$this->query('xpath://button[@title="Kiosk mode"]')->one()->click();
				$this->page->waitUntilReady();
			}

			// Wait for all graphs to load and check the screenshots of all graphs of the desired type.
			$charts_table = $this->query('id:charts')->waitUntilVisible()->one();
			foreach ($charts_table->query('class:center')->waitUntilCount($count)->all() as $graph) {
				$graph->waitUntilClassesNotPresent('is-loading', 60);
			}

			$this->assertScreenshot($charts_table, $screenshot_string.$show);

			// Switch back to normal view to avoid impacting following scenarios.
			if (CTestArrayHelper::get($data, 'kiosk_mode')) {
				$this->query('xpath://button[@title="Normal view"]')->one()->click();
				$this->page->waitUntilReady();
			}
		}
	}

	public function getLatestDataGraphData() {
		return [
			[
				[
					'type' => 'history',
					'item' => 'Item for history data display 1'
				]
			],
			[
				[
					'type' => 'trends',
					'item' => 'Item for trends data display 1'
				]
			]
		];
	}

	/**
	 * @dataProvider getLatestDataGraphData
	 */
	public function testDataDisplayInGraphs_LatestData($data) {
		$this->page->login()->open('history.php?action=showgraph&itemids%5B%5D='.self::$itemids[$data['item']])
				->waitUntilReady();

		// In Latest data the image loads longer, so need to wait for image source to change before checking the screenshot.
		$image = $this->query('id:historyGraph')->one();
		$old_source = $image->getAttribute('src');

		// Set time selector to display the time period, required for the corresponding data type.
		$this->setTimeSelector(self::TIMESTAMPS[$data['type']]);

		// Wait for the image source to change and check graph screenshot.
		$image->waitUntilAttributesNotPresent(['src' => $old_source]);
		$screenshot_id = 'latest_data_'.$data['type'];
		$this->assertScreenshot($this->query('class:center')->one(), $screenshot_id);

		$this->checkKioskMode('class:center', $screenshot_id);
	}

	public function getDashboardWidgetData() {
		return [
			[
				[
					'type' => 'history',
					'page' => 'Host graphs'
				]
			],
			[
				[
					'type' => 'trends',
					'page' => 'Host graphs'
				]
			],
			[
				[
					'type' => 'pie',
					'page' => 'Pie charts'
				]
			],
			[
				[
					'type' => 'history',
					'page' => 'Simple graphs'
				]
			],
			[
				[
					'type' => 'trends',
					'page' => 'Simple graphs'
				]
			],
			[
				[
					'page' => 'SVG graph types'
				]
			],
			[
				[
					'page' => 'Missing data + axes + timeshift + agg func'
				]
			]
		];
	}

	/**
	 * @dataProvider getDashboardWidgetData
	 */
	public function testDataDisplayInGraphs_DashboardWidgets($data) {
		$this->page->login()->open('zabbix.php?action=dashboard.view&dashboardid='.self::$dashboardid)->waitUntilReady();

		// It's required to set time selector only for pages with classic graph widgets, SVG graphs have period set in config.
		if (CTestArrayHelper::get($data, 'type')) {
			$this->setTimeSelector(self::TIMESTAMPS[$data['type']]);
		}

		$dashboard = CDashboardElement::find()->one()->waitUntilReady();

		// Open the required dashboard page and check screenshot.
		if ($data['page'] !== $dashboard->getSelectedPageName()) {
			$dashboard->selectPage($data['page']);
			$dashboard->waitUntilReady();
		}

		$screenshot_id = 'dashboard_'.$data['page'].'_page_'.CTestArrayHelper::get($data, 'type', 'svg');
		$this->assertScreenshot($dashboard, $screenshot_id);

		$this->checkKioskMode('class:dashboard-grid', $screenshot_id);
	}

	/**
	 * Check graphs screenshots in Kiosk mode.
	 *
	 * @param string	$object_locator		locator of element with graphs
	 * @param string	$id					ID of the screenshot
	 */
	protected function checkKioskMode($object_locator, $id) {
		if ($object_locator === 'class:center') {
			$image = $this->query($object_locator)->one()->query('tag:img')->one();
			$old_source = $image->getAttribute('src');
		}

		$this->query('xpath://button[@title="Kiosk mode"]')->one()->click();
		$this->page->waitUntilReady();

		$object = $this->query($object_locator)->waitUntilPresent()->one();

		// Wait for the dashboard to load widgets or wait for latest data graph to complete loading graph with new source.
		if ($object_locator === 'class:center') {
			$image->waitUntilAttributesNotPresent(['src' => $old_source]);

			$callback = function() use ($image) {
				return CElementQuery::getDriver()->executeScript('return arguments[0].complete;', [$image]);
			};

			CElementQuery::wait()->until($callback, 'Failed to wait for image to be loaded');
		}
		else {
			$object->asDashboard()->waitUntilReady();
		}

		$this->assertScreenshot($object, $id.'_kiosk');

		$this->query('xpath://button[@title="Normal view"]')->one()->click();
		$this->page->waitUntilReady();
	}

	/**
	 * Set time selector configuration according to the desired period.
	 *
	 * @param array	$timestamps		timestamps that represent the start and the end of the desired period
	 */
	protected function setTimeSelector($timestamps) {
		$filter_form = $this->query('name:zbx_filter')->asForm()->one();

		foreach (['from', 'to'] as $fieldid) {
			$filter_form->getField('id:'.$fieldid)->waitUntilVisible()->fill($timestamps[$fieldid]);
		}
		$filter_form->query('id:apply')->one()->click();
	}
}