$this->addJsFile('items.js');
$this->addJsFile('multilineinput.js');
$this->includeJsFile('search.js.php');
$table = (new CTableInfo())
->setHeader((new CRowHeader())
->addItem(new CColHeader(_('Host')))
->addItem(new CColHeader(_('IP')))
->addItem(new CColHeader(_('DNS')))
->addItem((new CColHeader(_('Monitoring')))
->setColSpan($data['hosts'] ? 5 : 1)
->addClass(ZBX_STYLE_TABLE_LEFT_BORDER)
->addItem((new CColHeader(_('Configuration')))
->setColSpan($data['hosts'] ? 5 : 1)
->addClass(ZBX_STYLE_TABLE_LEFT_BORDER)
->setNoDataMessage(_('No data found'));
foreach ($data['hosts'] as $hostid => $host) {
$interface = reset($host['interfaces']);
$visible_name = make_decoration($host['name'], $data['search']);
$name_link = ($host['editable'] && $data['allowed_ui_conf_hosts'])
? (new CLink($visible_name, (new CUrl('zabbix.php'))
->setArgument('action', 'host.edit')
->setArgument('hostid', $hostid)
->setAttribute('data-hostid', $host['hostid'])
->onClick('view.editHost(event, this.dataset.hostid);')
: new CSpan($visible_name);
if ($host['status'] == HOST_STATUS_NOT_MONITORED) {
->addClass(ZBX_STYLE_LINK_ALT)
->addClass(ZBX_STYLE_RED);
if ($host['host'] !== $host['name'] && stripos($host['host'], $data['search']) !== false) {
$name_link = [$name_link, BR(), '(', make_decoration($host['host'], $data['search']), ')'];
$latest_data_link = $data['allowed_ui_latest_data']
? new CLink(_('Latest data'),
->setArgument('action', 'latest.view')
->setArgument('hostids[]', $hostid)
->setArgument('filter_set', '1')
$latest_data_link = (new CCol($latest_data_link))->addClass(ZBX_STYLE_TABLE_LEFT_BORDER);
$problems_link = $data['allowed_ui_problems']
? new CLink(_('Problems'),
->setArgument('action', 'problem.view')
->setArgument('hostids', [$hostid])
->setArgument('filter_set', '1')
$charts_link = $data['allowed_ui_hosts']