*/ if ((hasRequest('widgetRefresh') || hasRequest('widgetRefreshRate')) && $data['screen']) { $elementId = getRequest('elementid'); $screen = getSlideshowScreens($elementId, getRequest('upd_counter')); // display screens $dbScreens = API::Screen()->get(['screenids' => $screen['screenid'], 'output' => API_OUTPUT_EXTEND, 'selectScreenItems' => API_OUTPUT_EXTEND]); if (!$dbScreens) { insert_js('alert("' . _('No permissions') . '");'); } else { $dbScreen = reset($dbScreens); // get fresh widget data if (hasRequest('widgetRefresh')) { $screenBuilder = new CScreenBuilder(['screen' => $dbScreen, 'mode' => SCREEN_MODE_PREVIEW, 'profileIdx' => 'web.slides', 'profileIdx2' => $elementId, 'hostid' => getRequest('hostid'), 'period' => getRequest('period'), 'stime' => getRequest('stime')]); CScreenBuilder::insertScreenCleanJs(); echo (new CDiv($screenBuilder->show()))->addClass(ZBX_STYLE_TABLE_FORMS_CONTAINER)->toString(); CScreenBuilder::insertScreenStandardJs(['timeline' => $screenBuilder->timeline, 'profileIdx' => $screenBuilder->profileIdx]); insertPagePostJs(); } // refresh rate if (hasRequest('widgetRefreshRate')) { $widgetRefreshRate = substr(getRequest('widgetRefreshRate'), 1); CProfile::update('web.slides.rf_rate.' . WIDGET_SLIDESHOW, $widgetRefreshRate, PROFILE_TYPE_STR, $elementId); } else { $widgetRefreshRate = CProfile::get('web.slides.rf_rate.' . WIDGET_SLIDESHOW, 1, getRequest('elementid', CProfile::get('web.slides.elementid'))); } $delay = $screen['delay'] > 0 ? $screen['delay'] : $data['screen']['delay']; insert_js('PMasters["slideshows"].dolls["' . WIDGET_SLIDESHOW . '"].frequency(' . CJs::encodeJson($delay * $widgetRefreshRate) . ');' . "\n" . 'PMasters["slideshows"].dolls["' . WIDGET_SLIDESHOW . '"].restartDoll();'); } } // filter state if (hasRequest('favobj') && hasRequest('favid')) {
** 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. **/ $chartsWidget = (new CWidget())->setTitle(_('Graphs')); $controls = (new CList())->addItem([_('Group') . SPACE, $this->data['pageFilter']->getGroupsCB()])->addItem([_('Host') . SPACE, $this->data['pageFilter']->getHostsCB()])->addItem([_('Graph') . SPACE, $this->data['pageFilter']->getGraphsCB()]); if ($this->data['graphid']) { $controls->addItem(get_icon('favourite', ['fav' => 'web.favorite.graphids', 'elname' => 'graphid', 'elid' => $this->data['graphid']])); $controls->addItem(get_icon('reset', ['id' => $this->data['graphid']])); $controls->addItem(get_icon('fullscreen', ['fullscreen' => $this->data['fullscreen']])); } else { $controls->addItem([get_icon('fullscreen', ['fullscreen' => $this->data['fullscreen']])]); } $chartForm = (new CForm('get'))->addVar('fullscreen', $this->data['fullscreen'])->addItem($controls); $chartsWidget->setControls($chartForm); $filterForm = (new CFilter('web.charts.filter.state'))->addNavigator(); $chartsWidget->addItem($filterForm); if (!empty($this->data['graphid'])) { // append chart to widget $screen = CScreenBuilder::getScreen(['resourcetype' => SCREEN_RESOURCE_CHART, 'graphid' => $this->data['graphid'], 'profileIdx' => 'web.screens', 'profileIdx2' => $this->data['graphid']]); $chartTable = (new CTable())->setAttribute('style', 'width: 100%;')->addRow($screen->get()); $chartsWidget->addItem($chartTable); CScreenBuilder::insertScreenStandardJs(['timeline' => $screen->timeline, 'profileIdx' => $screen->profileIdx]); } else { $screen = new CScreenBuilder(); CScreenBuilder::insertScreenStandardJs(['timeline' => $screen->timeline]); $chartsWidget->addItem(new CTableInfo()); } return $chartsWidget;
// if elementid is used to fetch an element, saving it in profile if (!$this->data['use_screen_name']) { CProfile::update('web.screens.elementid', $screen['screenid'], PROFILE_TYPE_ID); } // page header $screenWidget->addPageHeader(_('SCREENS'), array($headerForm, SPACE, get_icon('favourite', array('fav' => 'web.favorite.screenids', 'elname' => 'screenid', 'elid' => $screen['screenid'])), SPACE, get_icon('fullscreen', array('fullscreen' => $this->data['fullscreen'])))); $screenWidget->addItem(BR()); // append screens combobox to page header $headerForm = new CForm('get'); $headerForm->setName('headerForm'); $headerForm->addVar('fullscreen', $this->data['fullscreen']); $elementsComboBox = new CComboBox('elementid', $screen['screenid'], 'submit()'); foreach ($this->data['screens'] as $dbScreen) { $elementsComboBox->addItem($dbScreen['screenid'], htmlspecialchars(get_node_name_by_elid($dbScreen['screenid'], null, NAME_DELIMITER) . $dbScreen['name'])); } $headerForm->addItem(array(_('Screens') . SPACE, $elementsComboBox)); if (check_dynamic_items($screen['screenid'], 0)) { $pageFilter = new CPageFilter(array('groups' => array('monitored_hosts' => true, 'with_items' => true), 'hosts' => array('monitored_hosts' => true, 'with_items' => true, 'DDFirstLabel' => _('Default')), 'hostid' => get_request('hostid', null), 'groupid' => get_request('groupid', null))); $_REQUEST['groupid'] = $pageFilter->groupid; $_REQUEST['hostid'] = $pageFilter->hostid; $headerForm->addItem(array(SPACE, _('Group'), SPACE, $pageFilter->getGroupsCB(true))); $headerForm->addItem(array(SPACE, _('Host'), SPACE, $pageFilter->getHostsCB(true))); } $screenWidget->addHeader($screen['name'], $headerForm); // append screens to widget $screenBuilder = new CScreenBuilder(array('screenid' => $screen['screenid'], 'mode' => SCREEN_MODE_PREVIEW, 'profileIdx' => 'web.screens', 'profileIdx2' => $screen['screenid'], 'groupid' => get_request('groupid'), 'hostid' => get_request('hostid'), 'period' => $this->data['period'], 'stime' => $this->data['stime'])); $screenWidget->addItem($screenBuilder->show()); CScreenBuilder::insertScreenStandardJs(array('timeline' => $screenBuilder->timeline, 'profileIdx' => $screenBuilder->profileIdx)); $screenWidget->addItem(BR()); } return $screenWidget;
** 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. **/ $chartsWidget = new CWidget('hat_charts'); $chartForm = new CForm('get'); $chartForm->addVar('fullscreen', $this->data['fullscreen']); $chartForm->addItem(array(_('Group') . SPACE, $this->data['pageFilter']->getGroupsCB(true))); $chartForm->addItem(array(SPACE . _('Host') . SPACE, $this->data['pageFilter']->getHostsCB(true))); $chartForm->addItem(array(SPACE . _('Graph') . SPACE, $this->data['pageFilter']->getGraphsCB(true))); $chartsWidget->addFlicker(new CDiv(null, null, 'scrollbar_cntr'), CProfile::get('web.charts.filter.state', 1)); if ($this->data['graphid']) { $chartsWidget->addPageHeader(_('GRAPHS'), array(get_icon('favourite', array('fav' => 'web.favorite.graphids', 'elname' => 'graphid', 'elid' => $this->data['graphid'])), SPACE, get_icon('reset', array('id' => $this->data['graphid'])), SPACE, get_icon('fullscreen', array('fullscreen' => $this->data['fullscreen'])))); } else { $chartsWidget->addPageHeader(_('GRAPHS'), array(get_icon('fullscreen', array('fullscreen' => $this->data['fullscreen'])))); } $chartsWidget->addHeader(isset($this->data['pageFilter']->graphs[$this->data['graphid']]['name']) ? $this->data['pageFilter']->graphs[$this->data['graphid']]['name'] : null, $chartForm); $chartsWidget->addItem(BR()); if (!empty($this->data['graphid'])) { // append chart to widget $screen = CScreenBuilder::getScreen(array('resourcetype' => SCREEN_RESOURCE_CHART, 'graphid' => $this->data['graphid'], 'profileIdx' => 'web.screens', 'profileIdx2' => $this->data['graphid'])); $chartTable = new CTable(null, 'maxwidth'); $chartTable->addRow($screen->get()); $chartsWidget->addItem($chartTable); CScreenBuilder::insertScreenStandardJs(array('timeline' => $screen->timeline, 'profileIdx' => $screen->profileIdx)); } else { $screen = new CScreenBuilder(); CScreenBuilder::insertScreenStandardJs(array('timeline' => $screen->timeline)); $chartsWidget->addItem(new CTableInfo(_('No graphs found.'))); } return $chartsWidget;